python去除\ufeff、\xa0、\u3000 - 程式人生

文章推薦指數: 80 %
投票人數:10人

今天使用python處理一個txt檔案的時候,遇到幾個特殊字元:\ufeff、\xa0、\u3000,記錄一下處理方法. 程式碼: with open(file_path, mode='r') as f: 程式人生>>python去除\ufeff、\xa0、\u3000 python去除\ufeff、\xa0、\u3000 阿新••發佈:2018-11-08 今天使用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!   演算法模板(一)01揹包,多重揹包,完全揹包 «上一篇 演算法模板(二)子序列問題下一篇» 相關推薦 python去除\ufeff、\xa0、\u3000 今天使用python處理一個txt檔案的時候,遇到幾個特殊字元:\ufeff、\xa0、\u3000,記錄一下處理方法 程式碼:withopen(file_... python去除字元中得'\xa0' 有一個字串列表, file_size_lis=['738.7\xa0MB','746.5\xa0MB','4.4\xa0... Python去除多余空格 net.comurndefault-msizeefault大神裏的 今天做爬蟲時。

發現結果中好多多余的空... Python去除列表中重復的元素 arp代碼pythologpostclassfromkeysted內置 比較容易記憶的是用內置的set l... 35-Python-去除list中的空字元 https://www.cnblogs.com/yspass/p/9434366.html list1=['122','2333','3444'... 用python去除圖片中指定顏色的畫素 用python去除圖片白色畫素 需要python和pil fromPILimportImage importnumpyasnp i... Python字串去空方法Python去除多餘空格 Python去除多餘空格   今天做爬蟲時。

發現結果中好多多餘的空格。

然後有強迫症的我當然不會放過 &nbs... python去除列表中的重複元素,但不能改變原列表 ‘’’去除列表中的重複元素1.列表中的元素有重複,需要去掉重複元素2.要求保留原來的元素順序3.不需要返回值,直接修改原列表即可‘’... python去除重複元素,統計重複元素 test_labels_all=[1,1,2,2,2,4,6,6] ##去除重複數字 list1=... Python去除列表中重複的元素 l1=[’b’,’c’,’d’,’b’,’c’,’a’,’a’]l2=list(set(l1))printl2 還有一種據說速度更快的,沒測... 搜尋 基礎教學 Mysql入門 Sql入門 Android入門 Docker入門 Go語言入門 Ruby程式入門 Python入門 Python進階 Django入門 Python爬蟲入門 最近訪問 python去除\ufeff、\xa0、\u3000 as2++shareObject本地緩存存儲位置: jquery+計算兩個日期相差的天數 spring+國際化遇到的問題總結 解決tensorboard無法訪問此網站 Linux下分卷壓縮較大的檔案 SQL+牛刀小試+1+——+查詢操作 ajax中參數traditional的作用 003-nodejs檔案寫入系統 學習筆記-用c實現三角函數的計算



請為這篇文章評分?