![](/img/trans.png)
[英]Convert a list of tuples (from itertools) into a list of words in a text file, Python
[英]Convert text file to list of tuples
我无法将文本文件转换为元组列表。 文本文件将采用以下格式,文件名为 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)
但是,这并没有达到我想要的效果,它会产生以下 output
('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]
你很亲密。 infile.read()
将整个文件作为字符串提供给您,其中包括换行符 ( \n
)。 您可以改用.readlines()
。
with open('data.txt') as f:
lines = f.readlines()
return tuple(tuple(line.split()) for line in lines)
这应该给
(
("Evans", "Lee", "Comedian", "25,000"),
("Smith", "Will", "Actor", "50,000"),
...
)
您需要readlines()
,它将输入文件中的每一行读入列表中的单独项目:
load_file = open("data.txt", "r")
raw = infile.readlines()
data = [line.strip() for line in raw]
load_file.close()
print (data)
请注意,这将删除每行末尾的所有空格,而不仅仅是换行符。 应该没问题吧,我猜。
这里的问题是如何解析你的文件。 通常,文件是逗号分隔值,我们有一个字符来分割字段https://pt.wikipedia.org/wiki/Comma-separated_values或者我们有一个文件,其中列具有固定长度https://en .wikipedia.org/wiki/Flat-file_database
在您的情况下,我会使用正则表达式来解析您的行。
尝试这个:
import re
with open("data.txt", "r") as infile:
for line in infile:
groups = re.search("^(.+) (\d.*)", line)
name = groups.group(1)
value = groups.group(2)
print("Name: %s Value:%s" % (name, value))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.