數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號
前言
在搜集了很多文本語料之后,會開始漫長的數(shù)據(jù)清洗過程,通常要不斷迭代。
1. 問題描述
有些文本數(shù)據(jù)中,會包含一些特殊符號。
猜想可能是從某些富文本編輯器中直接粘貼到了網(wǎng)頁。
如果要清除這些特殊符號,就需要專門的工具。
2. 相關(guān)知識
Unicode標(biāo)準(zhǔn)把符號分為四大類,分別是:
| 縮寫 | 詳情 |
|---|---|
| [Sc] | Symbol, Currency |
| [Sk] | Symbol, Modifier |
| [Sm] | Symbol, Math |
| [So] | Symbol, Other |
一般需要清理掉的符號會是So類型的,但還是要根據(jù)自己的數(shù)據(jù)情況具體分析。
3. 解決方案
在數(shù)據(jù)清洗過程中遇到的符號可能包括:雜項符號、幾何形狀、箭頭、心形、星形、表情Emoji、貨幣符號等。
如果以上這些符號都要刪除,可以用下面的代碼。
text = "".join(ch for ch in text if unicodedata.category(ch)[0]!= 'S')
如果需要單獨去除某一類,或者希望知道某個符號所屬的具體類別,就需要到這個網(wǎng)站:
https://www.unicode.org/charts/charindex.html
查找對應(yīng)的符號類型。
以箭頭符號為例。
先用Arrow搜索上面的網(wǎng)頁,找到純粹的箭頭項Arrows,對應(yīng)的文檔是:https://www.unicode.org/charts/PDF/U2190.pdf
找到自己需要的箭頭,并查看對應(yīng)的名字。
舉例:箭頭
RIGHTWARDS ARROW,然后用python提供的unicodedata標(biāo)準(zhǔn)庫,查找這個符號的類別。
unicodedata.lookup('RIGHTWARDS ARROW')
'→'
unicodedata.category('→')
'Sm'
這樣,就知道要查找的箭頭符號,屬于Sm類別(數(shù)學(xué)符號)。
舉例:黑色方塊
BLACK SQUARE ■ U+25A0
unicodedata.lookup('BLACK SQUARE')
'■'
unicodedata.category('■')
'So'
舉例:黑色心形
unicodedata.lookup('BLACK HEART SUIT')
'?'
unicodedata.category('?')
'So'
舉例:黑色星形
unicodedata.lookup('BLACK FOUR POINTED STAR')
'?'
unicodedata.category('?')
'So'
如果只需要去除雜項符號,可以用下面的python代碼。
text = "".join(ch for ch in text if unicodedata.category(ch) != 'So')
另一個有用的網(wǎng)址:
https://www.fileformat.info/info/unicode/category/index.htm
總結(jié)
到此這篇關(guān)于數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號的文章就介紹到這了,更多相關(guān)Python去掉文本各種符號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于SpringBoot構(gòu)造器注入循環(huán)依賴及解決方式
這篇文章主要介紹了基于SpringBoot構(gòu)造器注入循環(huán)依賴及解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python Socket多線程并發(fā)原理及實現(xiàn)
這篇文章主要介紹了Python Socket多線程并發(fā)原理及實現(xiàn),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12
python出現(xiàn)RuntimeError錯誤問題及解決
這篇文章主要介紹了python出現(xiàn)RuntimeError錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
淺談python中常用的8種經(jīng)典數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了python中常用的8種經(jīng)典數(shù)據(jù)結(jié)構(gòu),包括原生數(shù)據(jù)結(jié)構(gòu),NumPy包中的數(shù)據(jù)結(jié)構(gòu),以及Pandas包中的數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下2023-03-03
python十進(jìn)制轉(zhuǎn)二進(jìn)制的詳解
在本篇文章里小編給大家整理了關(guān)于python十進(jìn)制轉(zhuǎn)二進(jìn)制的相關(guān)知識點內(nèi)容,需要的朋友們可以參考學(xué)習(xí)下。2020-02-02

