python - 将文本文件转换为元组列表
问题描述
我无法将文本文件转换为元组列表。文本文件将采用以下格式,文件名为 data.txt
埃文斯李 喜剧演员 25,000
史密斯威尔 演员 50,000
麦克李 喜剧演员 30,000
通过使用以下代码,我设法部分实现了我的目标
load_file = open("data.txt", "r")
data = infile.read()
load_file.close()
data = tuple(item for item in data.split(' ') if item.strip())
print (data)
但是,这并没有达到我想要的效果,它会产生以下输出
('Evans', 'Lee', 'Comedian', '25,000\nSmith', 'Will', 'Actor', '50,000\nMack', 'Lee', 'Comedian', '30,000')
这只是一个包含换行符的大长元组,有没有办法让data.txt文件中的每一行都是它自己的元组,给我一个元组列表并去掉换行符?
解决方案
如果你read()
把整个文件变成一个大字符串,你必须splitlines()
首先:
data = [tuple(line.split()) for line in data.splitlines()]
更好:不要将文件作为一个大字符串读取,而是直接迭代文件中的行:
with open("data.txt") as load_file:
data = [tuple(line.split()) for line in load_file]
更好csv
的是:用于读取数据;这也将允许您例如将包含空格的名称或职位放在引号中:
import csv
with open("data.txt") as load_file:
reader = csv.reader(load_file, delimiter=" ")
data = [tuple(row) for row in reader]
推荐阅读
- c++ - 使用 cout 和 cin 时,“<<”和“>>”运算符在做什么,我们为什么要使用它们?
- javascript - 用jquery选择相邻的div
- html - 即使调整窗口大小,也将 div 元素放置在图像顶部
- android - 数据未显示在使用 firebase ui 的 firebase 的 recyclerview 中
- python - for循环和追加的Python问题
- ansible - 如何在使用 terraform 创建的 kmv 中运行 ansible playbook
- debugging - How to run and debug a snap application with GDB?
- javascript - TypeError:无法读取未定义的属性“get”-Vue-resource 和 Nuxt
- node.js - Nodemon 已安装,但不运行服务器
- typescript - 在 gatsby 中将 typescript 标记的联合添加到 graphql 查询的结果