Python 将文本文件转换为元组列表

Python 将文本文件转换为元组列表,python,string,file,tuples,Python,String,File,Tuples,我无法将文本文件转换为元组列表。文本文件将采用以下格式,文件名为data.txt 埃文斯·李喜剧演员25000 史密斯将成为一名演员 麦克·李喜剧演员30000 通过使用以下代码,我已经部分实现了我的目标 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

我无法将文本文件转换为元组列表。文本文件将采用以下格式,文件名为data.txt

埃文斯·李喜剧演员25000
史密斯将成为一名演员
麦克·李喜剧演员30000

通过使用以下代码,我已经部分实现了我的目标

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文件中的每一行都是它自己的元组,给我一个元组列表并去掉换行符?

如果您
读取()
整个文件为一个大字符串,您必须
首先拆分行()

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]
您需要
readlines()
,它将输入文件中的每一行读取到列表中的一个单独项目中:

load_file=open(“data.txt”、“r”)
raw=infle.readlines()
数据=[line.strip()表示原始数据中的行]
加载_文件。关闭()
打印(数据)

注意,这将去除每行末尾的所有空白,而不仅仅是换行符。我猜那可能没关系。

你很接近了
infle.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"),
  ...
)

这里的问题是如何解析文件。 通常,文件是以逗号分隔的值,其中只有一个字符用于分割字段 或者我们有一个文件,其中列的长度是固定的

在您的情况下,我将使用正则表达式来解析您的行

试试这个:

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))

只需将data.split()中的“”更改为\n