python - 如何从列表中删除除单词之外的所有内容?
问题描述
我有一个这样的列表:
my_list=["'-\\n'",
"'81\\n'",
"'-\\n'",
"'0913\\n'",
"'Assistant nursing\\n'",
"'0533\\n'",
"'0895 Astronomy\\n'",
"'0533\\n'",
"'Astrophysics\\n'",
"'0532\\n'"]
有没有办法从这个列表中删除除了单词之外的所有东西?
输出:
my_list=['Assistant nursing',
'Astronomy',
'Astrophysics',]
例如,我知道如果我想以字符串形式删除整数,我可以这样做:
no_integers = [x for x in my_list if not (x.isdigit()
or x[0] == '-' and x[1:].isdigit())]
但效果不够好
解决方案
非正则表达式解决方案:
您可以从删除字符开始'-\\n
,然后只取出使用字母str.isalpha
或空格的字符,然后过滤掉空的子字符串''
。最后你可能需要去掉空格字符,这样
>>> list(filter(lambda x: x!='', (''.join(j for j in i.strip('\'-\\\\n') if j.isalpha() or j==' ').strip() for i in my_list)))
['Assistant nursing', 'Astronomy', 'Astrophysics']
如果你想使用regex,你可以使用 pattern: '([A-Za-z].*?)\\\\n'
with re.findall
,然后过滤掉空列表的元素,最后你可以展平列表
>>> import re
>>> list(filter(lambda x: x, [re.findall('([A-Za-z].*?)\\\\n', i) for i in my_list]))
[['Assistant nursing'], ['Astronomy'], ['Astrophysics']]
推荐阅读
- linux - Linux 按字母顺序对单词进行排序并为每个字母创建一个文件
- javascript - 合并 onsubmit 脚本
- python - Flask:使用 GET 请求下载 .zip 文件
- uwp - 将 ItemsSource 更新到 ItemsControl 时,SelectedItem 选择丢失
- android - 如何按行查询房间数据库android kotlin
- android - 当我使用自定义布局而不是通货膨胀时,DialogFragment 什么也不显示
- gcp-load-balancer - 将多个通配符 TLS 证书与单个 GCE 负载均衡器一起使用
- linux - Rust 非交互式标准输入读取
- javascript - 减少 node_modules 后 node_modules 出错
- python - 记录一个mac地址并检查它是否有效