数据清洗之如何用一行Python代码去掉文本中的各种符号
作者:coder1479 发布时间:2023-10-04 12:39:25
前言
在搜集了很多文本语料之后,会开始漫长的数据清洗过程,通常要不断迭代。
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
来源:https://blog.csdn.net/m0_48742971/article/details/123117893
猜你喜欢
- 最近需要用Python写一个简易通讯录,但是对于数据存储很发愁。大家都知道,使用 Python 中的列表和字典进行存储数据是很不靠谱的,所以
- 前言小程序跳一跳最近很火,之前爆出微信游戏小程序漏洞,网上也不乏大神。这里就用一大神的python脚本来刷下高分。 跳一跳python脚本传
- Python可是真强大。但他具体是怎么强大的,让我们一点一点来了解吧(小编每天晚上下班回家会抽时间看看教程,多充实下自己也是好的)。废话不多
- 在该网站下载你所需要的mysql依赖驱动版本,比如我的QT版本是5.15就下5.15版的 按照你的Qt编译版本和机器位数进行下载,
- 本篇博客参考Keqi Zhang的文章“A Progressive Morphological Filter for Removing No
- 似乎有一段时间没有更新博客了,这里就写点小功能,轻松获得电脑任意路径下的文件及文件夹,并将其写入word,以下是主要代码:**import
- GBK简体字符集的编码是同时用1个字节和2个字节来表示的。当高位是0x00~0x7f时,为一个字节,高位为0x80以上时用2个字节表示&qu
- APScheduler就是定时进行周期性的运行某些程序,在语言程序编写中,一直会遇到些定时服务,有时是根据时间定时,有时在固定的位置上进行定
- 本文实例讲述了JavaScript变量提升和严格模式。分享给大家供大家参考,具体如下:1.什么是变量提升所谓的变量提升指的是:函数声明和变量
- 需求:从接口动态获取子菜单数据 动态加载 要求只有展开才加载子菜单数据 支持刷新,页面显示正常思路:一开始比较乱,思路很多。想了很多首先路由
- 通过使用turtle绘画象棋棋盘,供大家参考,具体内容如下# 绘制象棋棋盘import turtlet = turtle.Pen()t.wi
- 本文主要介绍了python opencv 找出图像中的最大轮廓并填充,分享给大家,具体如下:import cv2import numpy a
- 微软开源了一个非常强大的自动化项目叫 playwright-python它支持主流的浏览器,包含:Chrome、Firefox、Safari
- 本文实例分析了JS重载实现方法。分享给大家供大家参考,具体如下:重载是面向对象语言里很重要的一个特性,JS中没有真正的重载,是模拟出来的(因
- 伴随着自然语言技术和机器学习技术的发展,越来越多的有意思的自然语言小项目呈现在大家的眼前,聊天机器人就是其中最典型的应用,今天小编就带领大家
- 本文实例讲述了PHP实现的redis主从数据库状态检测功能。分享给大家供大家参考,具体如下:实例:<?php/** * 检测多个主从r
- pyside2 >>> pip install pyside2 QT Designer>>
- <html> <head> <title> IE9 亲测JS各种去空格大全 </title>
- 在用到编辑器时,就会碰到一点,那就是标签的闭合问题,这个问题非常严峻,因为这可能会导致网页显示的整体样式受到破坏。这最近在PJ的functi
- 随着因特网的发展,在网络环境中,数据库应用渐渐向操作简单、功能实用的方向发展。本文介绍如何利用ASP技术实现对数据库进行在线维护的方法,并给