1. python: split的用法,在後面的括弧不同,輸出的也不一樣,大神能不能幫忙解釋一下下面的例子。
split的第一個參數是分隔符。
如果省略第一個參數,默認把所有的空格、製表符、回車符當作分隔符,並過濾掉空串。這個也是你第一種寫法的效果。
line.split(『\t''\n')
'\t'和'\n'是兩個字元串,會自動進行拼接,形成'\t\n'作為分隔符。而在你輸入的字元串中,不包含這樣的字串,所以就分割的結果就是原串。
split(『\t')
以'\t'作為分隔符,分割的結果就是第三種寫法。
split不支持同時使用多種字元做分隔符,如果想實現這樣的效果,可以用re,例如:
>>> a
'wowofbfwjowoefbwfoweojbwoefja'
>>> import re
>>> re.split('[ab]', a)
['wowof', 'fwjowoef', 'wfoweoj', 'woefj', '']
2. python 中怎麼讀取txt文件中的中文文字
代碼:
# -*- coding: utf-8 -*-
f = open('luciatest1.txt', encoding='gb18030')
filecontent = f.read()
print(filecontent)
運行效果:
3. Python里使用split("\r\n")分割html字元串,報錯TypeError:a bytes-like object is required,not 'str'
read()後加.decode('utf8')
4. Python字元串操作的split方法
str.split()沒有參數,代表以空字元分割,空字元包括空格、製表符、回車符、換行符等。因此,字元串中的空格和\n都是無參的split()的分割符。Line1-abcdef \nLine2-abc \nLine4-abcd分割後得到['Line1-abcdef', '', 'Line2-abc', '', 'Line4-abcd'],然後,split會拋棄得到的所有空字元串,因此最終結果就是['Line1-abcdef', 'Line2-abc', 'Line4-abcd']。
5. python的split函數亂碼了怎麼辦
首先變數最好別命名成str,因為有str這個函數,我就假設你用的是str0了
對於你的問題,應該是編碼的問題,和split沒有關系,你可以直接print str0看看。要解決問題,就是進行轉碼:str0=str0.decode("utf-8").encode("gbk"),然後進行str1=str0.split(),
6. python編程中中文輸出亂碼UnicodeEncodeError: 'ascii' codec can't encode character
樓主你好!
其實按照你的代碼的邏輯來做是沒有錯的,無法顯示成utf-8編碼的文本其實是因為在request請求的時候,按照網頁的標識轉了碼,接著BeautifulSoup把已經是utf-8的文本又強轉了一次utf-8編碼,導致了無法正確的顯示,以想要拿到的時間為例,其實程序的目標字元串應該如下:
#-*-coding:utf-8-*-
'''我們想要使用的字元串'''
target_str=':53'
'''兩次轉碼後的字元串'''
get_str=u':53'
歸根結底是兩個對象的類不同,但python不支持這兩種類型的強轉,個人想了個比較臨時的解決方案,算是個python打了個補丁,就是將字元串轉成二進制,再轉回字元串,這樣就unicode就不用給他加上編碼方式再轉成二進制字元串了,修改後的代碼如下:
#-*-coding:utf-8-*-
importrequests
frombs4importBeautifulSoup
fromdatetimeimportdatetime
defencode(s):
'''將字元串轉成二進制'''
return''.join([bin(ord(c)).replace('0b','')forcins])
defdecode(s):
'''將二進制轉換成字元串'''
return''.join([chr(i)foriin[int(b,2)forbins.split('')]])
res=requests.get('
)
res.encodeing='utf-8'
soup=BeautifulSoup(res.text,'html.parser')
'''每個中文字元都進行轉換處理'''
title=decode(encode(soup.select('#artibodyTitle')[0].text))
time=decode(encode(soup.select('.time-source')[0].contents[0].strip()))
chinese='%Y年%m月%d日%H:%M'
timesource=datetime.strptime(time,chinese)
print(title)
print(timesource)
看樓主在研究的過程中,對字元串的編碼原理的理解還有所欠缺,這方面的資料在網上很多,可以再自行研究一下,能夠獲得長足的進步。
望採納,謝謝!
7. php "str_split"函數分割中文字元串亂碼問題……
一個解決方案.
測試發現,preg_split對中文(多位元組)的分隔符處理可能真的存在問題.
原因可能是正則匹配時不能正常分隔一個多位元組字元(猜測).
但我實驗用半形(英文)的分隔符就工作得很好.
於是
我在處理待分隔的文本前先對文本進行替換,把中文的句點和逗號都替換成英文半形的.然後再使用preg_split,暫時發現工作得不錯.
以下是我的測試代碼.
<?php
$test = <<<EOF
記者從有關人士處獲悉,嫦娥二號發射的各項准備工作全部就緒,昨日經專家組評審,衛星、火箭、發射場、測控等系統均情況正常,具備發射條件。今天起,西昌衛星發射中心的加註手將為火箭加註燃料。
據一位航天專家介紹,因為地球和月球都在轉動的緣故,所以地月之間的最佳交匯點每年僅出現3次,而這3次便是發射探月衛星的最佳節點,經過觀測,今年3次的出現時間分別為10月1日、10月2日和10月3日,而最佳發射窗口則是1日晚7時,2日晚8時和3日晚10時,其中國慶日晚7時為佳中之佳。
針對媒體稱10月1日發射窗口時間為晚6時59分57秒,該專家告訴本報記者,早3秒並非提前3秒發射,而是將這3秒時間預留出來,作為現場指揮員在發送倒計時口令的緩沖時間。(記者萬強)
EOF;
//$input = $_POST[$content]; //........................獲取要分割的字元串
$test = str_replace(",",',',$test);
$test = str_replace("。",'.',$test);
$mode="/[,|.]/s"; //......................用「逗號」 和 「句號」 分割字元串
$output = preg_split($mode,$test,-1);
print_r($output);
?>
============
樓主不防試試,我的代碼是gb2312的字串.
經測試在,字元串為UTF8時,也可以正常工作.
8. python 字元串分割split()函數中中英文逗號分割
在我這里沒有問題啊,能夠正確地分割。注意最好不要用內置函數名稱作為變數名。