regex - 在保留字母数字单词的同时删除特殊字符
问题描述
我正在清理具有以下内容的数据集:
[在]
my_Series = pd.Series(["-","ASD", "711-AUG-M4G","Air G2G", "Karsh"])
my_Series.str.replace("[^a-zA-Z]+", " ")
[出去]
0
1 ASD
2 AUG M G
3 Air G G
4 Karsh
[理想出局]
0
1 ASD
2 AUG M4G
3 Air G2G
4 Karsh
我的目标是删除特殊字符和数字,但它有一个包含字母数字的单词,它应该保留。任何人都可以帮忙吗?
解决方案
尝试使用apply
以实现理想的输出。
>>> my_Series = pd.Series(["-","ASD", "711-AUG-M4G","Air G2G", "Karsh"])
输出:
>>> my_Series.apply(lambda x: " ".join(['' if word.isdigit() else word for word in x.replace('-', ' ').split()]))
0
1 ASD
2 AUG M4G
3 Air G2G
4 Karsh
dtype: object
解释:
我已经-
用. 然后检查单词是否为数字。space
spaces
如果是数字,则用空字符串替换,否则用实际单词替换。
最后,我们加入了名单。
编辑1:
正则表达式解决方案: -
>>> my_Series.str.replace("((\d+)(?=.*\d))|([^a-zA-Z0-9 ])", " ")
0
1 ASD
2 AUG M4G
3 Air G2G
4 Karsh
dtype: object
解释:
使用环视。
((\d+)(?=.*\d))|([^a-zA-Z0-9 ])
(如果后面有任何其他数字,则该数字位于最后)或(允许字母数字)
推荐阅读
- javascript - 我什么时候使用 {},什么时候不使用 JavaScript 中的 import
- lisp - car、cdr等的球拍实现
- oracle12c - 如何打开 Oracle Forms/Reports 12c?
- database-design - 防止子实体关系中的属性重复
- php - 使用 youtube-dl 下载 YuoTube 视频的进度条已完成
- javascript - 打开 EDX 无法解码 .weight 文件,内部服务器错误 (XBlock)
- flutter - 颤振)更改键盘工具栏颜色
- azure - Azure 函数和 Azure Cosmos DB 冲突源集成
- javascript - 如何在 GraphQL 中进行突变以创建需要关系的对象
- c++ - 当输入为字符或单词时,不显示“Invalid input”