python實(shí)現(xiàn)去掉字符串中的\xa0、\t、\n
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ù),它以一個(gè)字符(長度為1的字符串)作為參數(shù),返回對應(yīng)的ASCII數(shù)值,或者Unicode數(shù)值,如果所給的Unicode字符超出了你的Python定義范圍,則會(huì)引發(fā)一個(gè)TypeError的異常。
關(guān)于fromkeys方法:
dict中的fromkeys方法目的是創(chuàng)建一個(gè)只有key的字典,內(nèi)部利用for循環(huán),使三個(gè)字符的asii碼值成為可迭代對象(本來的整數(shù)是不可迭代的),分別對其迭代,存入字典。
關(guān)于translate方法:
Python translate() 方法根據(jù)參數(shù)table給出的表(包含 256 個(gè)字符)轉(zhuǎn)換字符串的字符, 要過濾掉的字符放到 del 參數(shù)中。接收到move返回的表(字典),之后對字符串進(jìn)行替換。
join()方法:
join(): 連接字符串?dāng)?shù)組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個(gè)新的字符串??梢娫撎幱胘oin方法真的是神來之筆,可謂絕妙!
值得注意的是,split方法中不帶參數(shù)時(shí),表示分割所有換行符、制表符、空格。
去除字符串中的\xa0不間斷空白符
記錄幾個(gè)python解析頁面時(shí)遇到的小問題解決方法
去除字符串中的\xa0不間斷空白符
? ? # 方法一:用編碼轉(zhuǎn)換的方式 ? ? ?import unicodedata ? ? ?s = unicodedata.normalize("NFKD", s) ? ? # 方法二:直接去除所有空白 ? ? s= ''.join(s.split()) ? ? # 方法三:自己轉(zhuǎn)換編碼ord方式,或替換replace等(不推薦)
xpath解析取標(biāo)簽下所有文字
? ? # 取出標(biāo)簽下所有文字,有3種方法: ? ? # 1.用//text()取所有文字然后join; ? ? remediation = cve_page.xpath("http://h2[@id='remediation']/following-sibling::p[1]//text()") ? ? remediation = ''.join(remediation).strip() ? ? # 2.用xpath('string(.)')解析; ? ? remediation = cve_page.xpath("http://h2[@id='remediation']/following-sibling::p[1]") ? ? remediation=remediation[0].xpath('string(.)').strip() ? ? # 3.轉(zhuǎn)換為str后用正則(不推薦)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python條件變量之生產(chǎn)者與消費(fèi)者操作實(shí)例分析
這篇文章主要介紹了python條件變量之生產(chǎn)者與消費(fèi)者操作,結(jié)合具體實(shí)例形式分析了Python條件變量的概念、原理、及線程操作的相關(guān)技巧,需要的朋友可以參考下2017-03-03Python連接Oracle之環(huán)境配置、實(shí)例代碼及報(bào)錯(cuò)解決方法詳解
這篇文章主要介紹了Python連接Oracle之環(huán)境配置、實(shí)例代碼及報(bào)錯(cuò)解決方法詳解,需要的朋友可以參考下2020-02-02python?pandas遍歷每行并累加進(jìn)行條件過濾方式
這篇文章主要介紹了python?pandas遍歷每行并累加進(jìn)行條件過濾方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05對Python的交互模式和直接運(yùn)行.py文件的區(qū)別詳解
今天小編就為大家分享一篇對Python的交互模式和直接運(yùn)行.py文件的區(qū)別詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python?Httpx庫實(shí)現(xiàn)超跑式網(wǎng)絡(luò)請求用法實(shí)例
這篇文章主要為大家介紹了Python?Httpx庫實(shí)現(xiàn)超跑式網(wǎng)絡(luò)請求用法實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python中的實(shí)例方法、靜態(tài)方法、類方法、類變量和實(shí)例變量淺析
這篇文章主要介紹了python中的實(shí)例方法、靜態(tài)方法、類方法、類變量和實(shí)例變量淺析,需要的朋友可以參考下2014-04-04Python中shutil模塊的學(xué)習(xí)筆記教程
shutil模塊是一種高層次的文件操作工具,類似于高級API,主要強(qiáng)大之處在于其對文件的復(fù)制與刪除操作更是比較支持好。下面這篇文章主要介紹了Python中shutil模塊的相關(guān)教程,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。2017-04-04在python中實(shí)現(xiàn)調(diào)用可執(zhí)行文件.exe的3種方法
今天小編就為大家分享一篇在python中實(shí)現(xiàn)調(diào)用可執(zhí)行文件.exe的3種方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07