欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 字符串處理特殊空格\xc2\xa0\t\n Non-breaking space

 更新時間:2020年02月23日 16:26:15   投稿:mdxy-dxy  
今天遇到一個問題,使用python的find函數(shù)尋找字符串中的第一個空格時沒有找到正確的位置,下面是解決方法,需要的朋友可以參考下

今天遇到一個問題,使用python的find函數(shù)尋找字符串中的第一個空格時沒有找到正確的位置,例如:

http://zc.whmc.edu.cn ==> 無法訪問的網(wǎng)站或無效的招標(biāo)網(wǎng)站

使用find(" ")函數(shù)尋找時找到的第一個空格對應(yīng)在==>后面的那個位置。一開始覺得是編碼問題,但是文件是用UTF-8編碼的,按理說不應(yīng)該產(chǎn)生編碼問題,就用Sublime打開一看是這樣的:

可以看到,我的Sublime設(shè)置了顯示空白,所以第二個紅線上方有一個白點,而第一個紅線上方卻沒有,這說明第一個紅線上方那個字符確實不是一個空格,也就是說函數(shù)的運(yùn)行沒有問題。但那個空格倒底是個什么東西呢?在Sublime中File-->Reopen with Encoding-->Hexadecimal打開文件可以看到是這樣的:

在網(wǎng)上可以查到,==>對應(yīng)的UTF-8編碼是\x3d\x3d\x3e,所以前面的那個神秘字符的編碼就是\xc2\xa0,上網(wǎng)查到這是一個叫做Non-breaking space的東西,用于阻止在此處自動換行和阻止多個空格被壓縮成一個。至于解決方法,先用subplace("\xc2\xa0", " ")把這個特殊的空格替換一下就行了。

去除特殊空格:\xc2\xa0

在去除空格的時候遇到一種情況:

a = '2 '
b = '3'
print a.split(),b

輸出結(jié)果:

['2\xc2\xa0'] 3

在網(wǎng)上可以查到,==>對應(yīng)的UTF-8編碼是\x3d\x3d\x3e,所以前面的那個神秘字符的編碼就是\xc2\xa0,上網(wǎng)查到這是一個叫做Non-breaking space的東西,用于阻止在此處自動換行和阻止多個空格被壓縮成一個。至于解決方法,先用subplace("\xc2\xa0", " ")

a = '2 '
b = '3'
 
print a.replace("\xc2\xa0", ""),b

輸出結(jié)果:

python 爬蟲爬取內(nèi)容時, \xa0 、 \u3000 的含義與處理方法

處理方法

str.replace(u'\xa0', u' ')

最近用 scrapy 爬某網(wǎng)站,發(fā)現(xiàn)拿到的內(nèi)容里面含有 \xa0 、 \u3000 這樣的字符,起初還以為是編碼不對,搜了一下才知道是見識太少 233 。

\xa0 是不間斷空白符  

我們通常所用的空格是 \x20 ,是在標(biāo)準(zhǔn)ASCII可見字符 0x20~0x7e 范圍內(nèi)。
而 \xa0 屬于 latin1 (ISO/IEC_8859-1)中的擴(kuò)展字符集字符,代表空白符nbsp(non-breaking space)。
latin1 字符集向下兼容 ASCII ( 0x20~0x7e )。通常我們見到的字符多數(shù)是 latin1 的,比如在 MySQL 數(shù)據(jù)庫中。

這里也有一張簡陋的Latin1字符集對照表。

\u3000 是全角的空白符

根據(jù)Unicode編碼標(biāo)準(zhǔn)及其基本多語言面的定義, \u3000 屬于CJK字符CJK標(biāo)點符號區(qū)塊內(nèi),是空白字符之一。它的名字是 Ideographic Space ,有人譯作表意字空格、象形字空格等。顧名思義,就是全角的 CJK 空格。它跟 nbsp 不一樣,是可以被換行間斷的。常用于制造縮進(jìn), wiki 還說用于抬頭,但沒見過。

這里還有一個 Unicode.org 上關(guān)于 CJK 標(biāo)點符號塊的字符代碼表。

python中去掉字符串中的\xa0、\t、\n

今天幫女朋友從網(wǎng)絡(luò)上收集一些信息,但是發(fā)現(xiàn)提取出的信息中有“\xa0”,并且無法去掉,查閱了相關(guān)資料,后發(fā)現(xiàn)該字符表示空格。

\xa0 是不間斷空白符  
我們通常所用的空格是 \x20 ,是在標(biāo)準(zhǔn)ASCII可見字符 0x20~0x7e 范圍內(nèi)。
而 \xa0 屬于 latin1 (ISO/IEC_8859-1)中的擴(kuò)展字符集字符,代表空白符nbsp(non-breaking space)。
latin1 字符集向下兼容 ASCII ( 0x20~0x7e )。通常我們見到的字符多數(shù)是 latin1 的,比如在 MySQL 數(shù)據(jù)庫中。
有如下信息:

'T-shirt\xa0\xa0短袖圓領(lǐng)衫,體恤衫\xa0,', 'V-neck\xa0\xa0V型領(lǐng)\xa0sleeve\xa0\xa0袖子\xa0,',

我們?nèi)绾螌⑵渲械腬xz0去掉呢,試了re模塊的sub方法,發(fā)現(xiàn)沒有作用,于是又開始查閱相關(guān)資料,終于解決了該問題。方法如下:

>>> inputstring = u'\n           Door:\xa0Novum     \t   '
>>> move = dict.fromkeys((ord(c) for c in u"\xa0\n\t"))
>>> output = inputstring.translate(move)
>>> output
'           Door:Novum 

另外還有一種更簡單的方法,利用split方法:

>>> s
'T-shirt\xa0\xa0短袖圓領(lǐng)衫,體恤衫\xa0'
>>> out = "".join(s.split())
>>> out
'T-shirt短袖圓領(lǐng)衫,體恤衫'

可以發(fā)現(xiàn)利用translate方法、split()可以完美解決,并且還可以替換\t \n字符,由此又學(xué)到了新知識!

關(guān)于ord函數(shù):
ord()函數(shù)是chr()函數(shù)(對于8位的ASCII字符串)或unichr()函數(shù)(對于Unicode對象)的配對函數(shù),它以一個字符(長度為1的字符串)作為參數(shù),返回對應(yīng)的ASCII數(shù)值,或者Unicode數(shù)值,如果所給的Unicode字符超出了你的Python定義范圍,則會引發(fā)一個TypeError的異常。

關(guān)于fromkeys方法:
dict中的fromkeys方法目的是創(chuàng)建一個只有key的字典,內(nèi)部利用for循環(huán),使三個字符的asii碼值成為可迭代對象(本來的整數(shù)是不可迭代的),分別對其迭代,存入字典。

關(guān)于translate方法:
Python translate() 方法根據(jù)參數(shù)table給出的表(包含 256 個字符)轉(zhuǎn)換字符串的字符, 要過濾掉的字符放到 del 參數(shù)中。接收到move返回的表(字典),之后對字符串進(jìn)行替換。

join()方法:
join(): 連接字符串?dāng)?shù)組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個新的字符串??梢娫撎幱胘oin方法真的是神來之筆,可謂絕妙!

值得注意的是,split方法中不帶參數(shù)時,表示分割所有換行符、制表符、空格。

python2 可以這樣

s=s.replace(unichr(0xa0),'')

到此這篇關(guān)于Python 字符串處理特殊空格\xc2\xa0 Non-breaking space的文章就介紹到這了,更多相關(guān)Python 特殊空格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • anaconda的安裝和配置環(huán)境及導(dǎo)入pycharm的方法

    anaconda的安裝和配置環(huán)境及導(dǎo)入pycharm的方法

    這篇文章主要介紹了anaconda的安裝和配置環(huán)境及導(dǎo)入pycharm的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 淺談Python中的繼承

    淺談Python中的繼承

    這篇文章主要介紹了Python中繼承的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • python3實現(xiàn)名片管理系統(tǒng)(控制臺版)

    python3實現(xiàn)名片管理系統(tǒng)(控制臺版)

    這篇文章主要為大家詳細(xì)介紹了python3實現(xiàn)名片管理系統(tǒng)控制臺版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • python實現(xiàn)銀行賬戶系統(tǒng)

    python實現(xiàn)銀行賬戶系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)銀行賬戶系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Python之Anaconda啟動過程中的異常錯誤問題及解決

    Python之Anaconda啟動過程中的異常錯誤問題及解決

    這篇文章主要介紹了Python之Anaconda啟動過程中的異常錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python使用JWT的超詳細(xì)教程

    Python使用JWT的超詳細(xì)教程

    這篇文章主要介紹了Python使用JWT的相關(guān)資料,JWT(JSON?Web?Tokens)是一種網(wǎng)絡(luò)應(yīng)用間傳輸信息的標(biāo)準(zhǔn),包括三部分:Header(頭部),Payload(負(fù)載),Signature(簽名),頭部包含聲明類型和算法,需要的朋友可以參考下
    2024-10-10
  • python GUI庫圖形界面開發(fā)之PyQt5下拉列表框控件QComboBox詳細(xì)使用方法與實例

    python GUI庫圖形界面開發(fā)之PyQt5下拉列表框控件QComboBox詳細(xì)使用方法與實例

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5下拉列表框控件QComboBox詳細(xì)使用方法與實例,需要的朋友可以參考下
    2020-02-02
  • Python 實現(xiàn)圖像逐像素點取鄰域數(shù)據(jù)

    Python 實現(xiàn)圖像逐像素點取鄰域數(shù)據(jù)

    這篇文章主要介紹了Python 實現(xiàn)圖像逐像素點取鄰域數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python實現(xiàn)爬取圖書封面

    python實現(xiàn)爬取圖書封面

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)爬取圖書封面的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • wxPython多個窗口的基本結(jié)構(gòu)

    wxPython多個窗口的基本結(jié)構(gòu)

    這篇文章主要為大家詳細(xì)介紹了wxPython多個窗口的基本結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論