数据清洗:用一行Python代码去掉文本中的各种符号

1年前未命名124
数据清洗:用一行Python代码去掉文本中的各种符号 coder1479 于2022-02-24 19:00:38发布 3786 收藏 18 分类专栏: 信息抽取 Python 文章标签: python 信息抽取 同时被 2 个专栏收录 17 篇文章 0 订阅 订阅专栏 Python 17 篇文章 0 订阅 订阅专栏 前言

在搜集了很多文本语料之后,会开始漫长的数据清洗过程,通常要不断迭代。

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')

另一个有用的网址:

https://www.fileformat.info/info/unicode/category/index.htm

标签: [db:标签TAG]

相关文章

第十四届蓝桥杯第三期模拟赛原题与详解

第十四届蓝桥杯第三期模拟赛原题与详解...

致敬我的C++启蒙老师,跟着他学计算机编程就对了 (文末赠书5本)

致敬我的C++启蒙老师,跟着他学计算机编程就对了 (文末赠书5本)...

一文详解Yolov5——基于Yolov5的火灾检测系统

一文详解Yolov5——基于Yolov5的火灾检测系统...

ChatGPT(GPT3.5) OpenAI官方API正式发布

ChatGPT(GPT3.5) OpenAI官方API正式发布...

C++:C++编译过程:看完还不懂C++编译过程来捶我

C++:C++编译过程:看完还不懂C++编译过程来捶我...

Rust中结构体的定义和实例化

Rust中结构体的定义和实例化...