python - Python从具有特殊情况的列表中删除非字母字符/单词
问题描述
嗨,伙计们,我只是想知道如果列表中的单词不包含任何字母字符,我该如何将其删除,但如果它包含任何字母字符后跟任何类型的特殊字符或数字,则不会被删除
说我有一个句子/单词列表,如下所示:
['python','abc123','@@','!!','12345abc#','hello@','141351351','123abc']
所需的输出将是:
['python','abc123','','','12345abc#','hello@','','123abc']
我尝试过的是以下内容:
data = ['python','abc123','@@','!!','12345abc#','hello@','141351351','123abc']
regex = re.compile('[^a-zA-Z0-9&._-]')
filtered= [regex.sub('', each_data) for each_data in data ]
结果是:
['python', 'abc123', '12345abc', 'hello', '141351351', '123abc']
它删除了所有错误的特殊字符我不知道如何解决这个问题,我仍在考虑如何使用正则表达式解决它,我也尝试过使用 nltk 并且似乎也找不到答案。任何形式的提示或帮助将不胜感激
解决方案
我不确定我是否理解您的问题,但您提供的示例输入输出可以处理为:
[item if re.search('(?i)[a-z]', item) else '' for item in your_list]
你的例子:
your_list = ['python','abc123','@@','!!','12345abc#','hello@','141351351','123abc']
import re
[item if re.search('(?i)[a-z]', item) else '' for item in your_list]
# output:
# ['python', 'abc123', '', '', '12345abc#', 'hello@', '', '123abc']
推荐阅读
- javascript - Angular如何打印出服务器响应
- angular - Angular 6 mat-table 不会排序
- java - 从 java/kotlin 中的父抽象类数组调用子类函数
- ios - 为 Starscream 发送 SSL 证书返回错误
- angular - 为特定元素动态添加样式
- java - 出现“IllegalArgumentException:您不能将您的设置保留在安全设置中”错误
- css - 字体未通过 https 显示
- docker - 如何保持节点 lambda 在本地运行
- javascript - 无法从动态 jquery 表单中删除元素
- jupyter-notebook - 如何重置 jupyter notebook 元数据,保留内容。所以用git管理起来会更容易