在進行網頁爬蟲分析時,遇到了一些特殊字符,通過網絡搜索找到了解決方法,所以利用這篇博文將遇到的問題以及解決方法記錄下來,方便回顧,也希望這篇博文能夠幫助到大家。
\u200b \xa0 \u3000等特殊字符
這些特殊字符通常不在ASCII可見字符范圍內,因此我們在瀏覽網頁時看不到這些字符,但是在分析網頁源碼時會遇到。
方法一,利用split方法
處理這些字符最簡單的方法是利用split方法去除。
參考博文:https://blog.csdn.net/wangbowj123/article/details/78061618
關鍵程序段(來自參考博文):
>>> s
'T-shirt\xa0\xa0短袖圓領衫,體恤衫\xa0'
>>> out = "".join(s.split())
>>> out
'T-shirt短袖圓領衫,體恤衫'
方法二,利用replace方法
使用split方法進行特殊字符的去除有個壞處就是原文中的空格與換行也會一並刪除,原因是“split方法中不帶參數時,表示分割所有換行符、制表符、空格”。如果文字中只有一兩種特殊字符,也可以利用replace方法進行去除。
參考博文:https://blog.csdn.net/thewindkee/article/details/79890207
例程:
>>> s='T-shirt\xa0\xa0短袖圓領衫,體恤衫\xa0'
>>> s
'T-shirt\xa0\xa0短袖圓領衫,體恤衫\xa0'
>>> out=s.replace('\xa0','')
>>> out
'T-shirt短袖圓領衫,體恤衫'
這個方法可以避免將需要保留的空格和換行等符號刪除,但是壞處是需要對每種特殊字符單獨設置。
方法三,將split與replace方法結合
方法的原理是先將需要保留的制表符、換行符和空格等利用replace方法替換為特定的符號,然后利用方法一中的方法將其余的不需要保留的不可見字符去除,最后再利用replace方法還原原來的制表符、換行符和空格等。
例程:
>>> s='aaabbb\xa0 ccc\t ddd\n eee'
>>> s
'aaabbb\xa0 ccc\t ddd\n eee'
>>> print(s)
aaabbb ccc ddd
eee
>>> out=s.replace('\t','【制表符】')
>>> out=out.replace('\n','【換行符】')
>>> print(out)
aaabbb ccc【制表符】 ddd【換行符】 eee
>>> out=''.join(out.split())
>>> print(out)
aaabbbccc【制表符】ddd【換行符】eee
>>> out=out.replace('【制表符】','\t')
>>> out=out.replace('【換行符】','\n')
>>> print(out)
aaabbbccc ddd
eee
>>> out
'aaabbbccc\tddd\neee'