python - 如何使用列表理解从 .txt 文件中过滤出列表?
问题描述
我正在上 Python 课,但我想不出带回家的测验。我正在使用 IDLE 编写代码。
我们必须将名为 names.txt 的文件加载到列表中。该文件包含以下内容:
Joe Smith
000000
Jeff Mitchell
xxxxxxx
Benjamin Grant
12346
我需要过滤掉包含“xxxxxxx”或数字的行。我正在尝试将列表理解与以下代码一起使用:
> names = open(r'C:\Users\eesqu\Documents\Python\names1.txt','r')
> names_contents = names.read()
> filtered_names = [n for n in names_contents if n !='xxxxxxx']
> names.close()
> print(filtered_names)
但是,当我打印过滤后的名称输出时,名称不会被过滤,而是以下拉格式显示,它们看起来像这样:
['J','o','e','','S','m','i','t','h','\n','0','0',' 0'、'0'、'0'、'0'、'\n'、'J'、'e'、'f'、'f'、''、'M'、'i'、't' ,'c','h','e','l','l','\n','x','x','x','x','x','x', 'x'、'\n'、'B'、'e'、'n'、'j'、'a'、'm'、'i'、'n'、''、'G'、'r ', 'a', 'n', 't', '\n', '1', '2', '3', '4', '6', '\n']
我在这里做错了什么?是否可以同时过滤掉“xxxxxxx”和数字?
感谢您在我开始编写代码时的支持。
解决方案
您可以使用readlines
读取数据和列表理解来过滤掉xxx
ss = '''
Joe Smith
000000
Jeff Mitchell
xxxxxxx
Benjamin Grant
12346
'''.strip()
with open('names.txt','w') as f: f.write(ss) # write data file
###############################
with open('names.txt') as f:
lns = f.readlines()
xx = [ln.strip() for ln in lns if ln.strip() != 'xxxxxxx']
print('\n'.join(xx))
输出
Joe Smith
000000
Jeff Mitchell
Benjamin Grant
12346
推荐阅读
- eos - EOS-Mainnet 将无法工作。无法运行节点
- mysql - 在我的 MySQL 视图中获取重复的行
- wso2 - 如何将 wso2esb 中的查询 URL 传递到端点
- node.js - 将渲染网页中的内容读入nodejs
- node.js - 制作数组
到一个没有 Promise 的数组 - python - 在 rclpy ROS2 的 pub&sub 中设置端点
- rust - 是否可以组合嵌套关联类型的边界?
- android - 如何在嵌套视图中水平划分视图
- ios - 是否可以在 iOS 中发送带有视频附件的短信?
- vba - 我想将第二张工作表中的数据透视表作为范围粘贴到另一个工作簿中,但它似乎不起作用