python去除\ufeff、\xa0、\u3000 - 碼上快樂
文章推薦指數: 80 %
今天使用python處理一個txt文件的時候,遇到幾個特殊字符:\ufeff、\xa0、\u3000,記錄一下處理方法. 代碼: with open(file_path, mode='r') as f:
碼上快樂
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
python去除\ufeff、\xa0、\u3000
本文轉載自
zqifa
查看原文
2018-11-0812:01
7159
python/
文件
今天使用python處理一個txt文件的時候,遇到幾個特殊字符:\ufeff、\xa0、\u3000,記錄一下處理方法
代碼:withopen(file_path,mode='r')asf:s=f.read()
1.\ufeff字節順序標記
去掉\ufeff,只需改一下編碼就行,把UTF-8編碼改成UTF-8-sigwithopen(file_path,mode='r',encoding='UTF-8-sig')asf:s=f.read()
2.\xa0是不間斷空白符
\xa0是不間斷空白符 我們通常所用的空格是\x20,是在標准ASCII可見字符0x20~0x7e范圍內。
而\xa0屬於latin1(ISO/IEC_8859-1)中的擴展字符集字符,代表空白符nbsp(non-breakingspace)。
latin1字符集向下兼容ASCII(0x20~0x7e)。
通常我們見到的字符多數是latin1的,比如在MySQL數據庫中。
去除\xa0str.replace(u'\xa0',u'')
3.\u3000是全角的空白符根據Unicode編碼標准及其基本多語言面的定義,\u3000屬於CJK字符的CJK標點符號區塊內,是空白字符之一。
它的名字是IdeographicSpace,有人譯作表意字空格、象形字空格等。
顧名思義,就是全角的CJK空格。
它跟nbsp不一樣,是可以被換行間斷的。
常用於制造縮進,wiki還說用於抬頭,但沒見過。
去除\u3000str.replace(u'\u3000',u'')去除空格和\xa0、\u3000title.strip().replace(u'\u3000',u'').replace(u'\xa0',u'')
ps:關於\ufeff的一些資料(引自維基百科):
字節順序標記(英語:byte-ordermark,BOM)是位於碼點U+FEFF的統一碼字符的名稱。
當以UTF-16或UTF-32來將UCS/統一碼字符所組成的字符串編碼時,這個字符被用來標示其字節序。
它常被用來當做標示文件是以UTF-8、UTF-16或UTF-32編碼的記號。
字符U+FEFF如果出現在字節流的開頭,則用來標識該字節流的字節序,是高位在前還是低位在前。
如果它出現在字節流的中間,則表達零寬度非換行空格的意義,用戶看起來就是一個空格。
從Unicode3.2開始,U+FEFF只能出現在字節流的開頭,只能用於標識字節序,就如它的名稱——字節序標記——所表示的一樣;除此以外的用法已被舍棄。
取而代之的是,使用U+2060來表達零寬度無斷空白。
在UTF-16中,字節順序標記被放置為文件或字符串流的第一個字符,以標示在此文件或字符串流中,以所有十六比特為單位的字碼的尾序(字節順序)。
如果十六比特單位被表示成大尾序,這字節順序標記字符在序列中將呈現0xFE,其后跟着0xFF(其中的0x用來標示十六進制)。
如果十六比特單位使用小尾序,這個字節序列為0xFF,其后接着0xFE。
而統一碼中,值為U+FFFE的碼位被保證將不會被指定成一個統一碼字符。
這意味着0xFF、0xFE將只能被解釋成小尾序中的U+FEFF(因為不可能是大尾序中的U+FFFE)。
UTF-8則沒有字節順序的議題。
UTF-8編碼過的字節順序標記則被用來標示它是UTF-8的文件。
它只用來標示一個UTF-8的文件,而不用來說明字節順序。
[1]許多視窗程序(包含記事本)會添加字節順序標記到UTF-8文件。
然而,在類Unix系統(大量使用文本文件,用於文件格式,用於進程間通信)中,這種做法則不被建議采用。
因為它會妨礙到如解譯器腳本開頭的Shebang等的一些重要的碼的正確處理。
它亦會影響到無法識別它的編程語言。
如gcc會報告源碼檔開頭有無法識別的字符。
而在PHP中,如果沒有激活輸出緩沖(outputbuffering),它會使得頁面內容開始被送往瀏覽器(即:用戶頭文件已被提交),這使PHP腳本無法指定用戶頭文件(HTTPHeader)。
字節順序標記在UTF-8中被表示為序列EFBBBF,對大部分未准備好處理UTF-8的文本編輯器及網頁瀏覽器而言,在ISO-8859-1的環境中則會顯示。
雖然字節順序標記亦可以用於UTF-32,但這個編碼很少用於傳輸,其規則如同UTF-16。
對於已於IANA注冊的字符集UTF-16BE、UTF-16LE、UTF-32BE和UTF-32LE等來說,不可使用字節順序標記。
文檔開頭的U+FEFF會被解釋成一個(已舍棄的)"零寬度無斷空白",因為這些字符集的名字已決定了其字節順序。
對於已注冊字符集UTF-16和UTF-32來說,一個開頭的U+FEFF則用來表示字節順序。
done!
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。
如果侵犯了您的隱私權益,請聯系本站郵箱[email protected]刪除。
猜您在找
errorerror:illegalcharacter:'\u3000'
Python如何去掉字符串‘\xa0’
Python去掉從Excel讀取的空格\xa0
python去掉字符串'\xa0'
三種空格unicode(\u00A0,\u0020,\u3000)表示的區別
unity動態給TextMeshProUGUI進行賦值,\n\u3000等轉義字符失效
去除\ufeff
解決:"UnicodeEncodeError:'ascii'codeccan'tencodecharacteru'\xa0'inposition"錯誤
python去除BOM頭\ufeff等特殊字符
python爬蟲中遇到“\xb5”、“xa0”等字符時報錯編碼錯誤的處理方式
粵ICP備18138465號
©2018-2022CODEPRJ.COM
延伸文章資訊
- 1python去除\ufeff、\xa0、\u3000 - 碼上快樂
今天使用python處理一個txt文件的時候,遇到幾個特殊字符:\ufeff、\xa0、\u3000,記錄一下處理方法. 代碼: with open(file_path, mode='r') a...
- 2python 爬虫爬取内容时, \xa0 、 \u3000 的含义 - 博客园
最近用scrapy 爬某网站,发现拿到的内容里面含有\xa0 、 \u3000 这样的字符,起初还以为是编码不对,搜了一下才知道是见识太少233 。
- 3网页爬虫中\xa0、\u3000等字符的解释及去除_pengjunlee的博客
Python标准库的 unicodedata 模块提供了 normalize 方法将Unicode字符转换为正常字符,该方法可算是处理这类情况最好的方法了,它会让字符回归到我们期望 ...
- 4python 爬蟲爬取內容時, \xa0 、 \u3000 的含義與處理方法
python爬蟲爬取內容時,\xa0、\u3000的含義轉自:https://www.cnblogs.com/BlackStorm/p/6359005.html處理方法str.replace(u...
- 5python去除\ufeff、\xa0、\u3000 - zqifa - 博客园
今天使用python处理一个txt文件的时候,遇到几个特殊字符:\ufeff、\xa0、\u3000,记录一下处理方法代码:with open(file_path, mode='r'