数据清洗:用一行Python代码去掉文本中的各种符号_python 删除非文本信息 代码
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
前言
在搜集了很多文本语料之后会开始漫长的数据清洗过程通常要不断迭代。
1. 问题描述
有些文本数据中会包含一些特殊符号。
猜想可能是从某些富文本编辑器中直接粘贴到了网页。
如果要清除这些特殊符号就需要专门的工具。
2. 相关知识
Unicode标准把符号分为四大类分别是
缩写 | 详情 |
---|---|
[Sc] | Symbol, Currency |
[Sk] | Symbol, Modifier |
[Sm] | Symbol, Math |
[So] | Symbol, Other |
一般需要清理掉的符号会是So
类型的但还是要根据自己的数据情况具体分析。
3. 解决方案
在数据清洗过程中遇到的符号可能包括杂项符号、几何形状、箭头、心形、星形、表情Emoji、货币符号等。
如果以上这些符号都要删除可以用下面的代码。
text = "".join(ch for ch in text if unicodedata.category(ch)[0]!= 'S')
如果需要单独去除某一类或者希望知道某个符号所属的具体类别就需要到这个网站:
https://www.unicode.org/charts/charindex.html
查找对应的符号类型。
以箭头符号为例。
先用Arrow搜索上面的网页找到纯粹的箭头项Arrows对应的文档是https://www.unicode.org/charts/PDF/U2190.pdf
找到自己需要的箭头并查看对应的名字。
举例箭头
RIGHTWARDS ARROW然后用python
提供的unicodedata
标准库查找这个符号的类别。
unicodedata.lookup('RIGHTWARDS ARROW')
'→'
unicodedata.category('→')
'Sm'
这样就知道要查找的箭头符号属于Sm类别数学符号。
举例黑色方块
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')
另一个有用的网址