如何创建子列表列表,其中子列表是拆分字符串?

2024-06-01 00:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须编写一个程序,它从文件中读取并打印一个包含姓名、姓氏的列表。到目前为止,我已经能够让它做所有的事情,除了打印信息的正确形式:

def main():
file = open("users.txt", "r")
data = file.read()
data2 = data.split("\n")
for line in data2[0:]:
    a = line.split("|")
    print(a)
main()

而不是像我需要的那样打印出[['name1','last1'],['name2','last2'],['name3','last3']],而是打印出:

['name1', 'last1']
['name2', 'last2']
['name3', 'last3']

在users.txt文件中,信息为:

name1|last1
name2|last2
name3|last3

Tags: 程序txtdatamainlineusersfilesplit
3条回答

您的split语句将生成一个列表,这就是为什么会出现这样的行:

['name1', 'last1']

如果要存储或打印列表列表,可以执行以下操作:

names = list()
for line in data2[0:]:
    a = line.split("|")
    names.append(a)
print(names)

更好的是,我们可以使用with使文件的读取更加清晰:

def main():
    names = list()
    with open("users.txt", "r") as myfile:
        for line in myfile:
            names.append(line.split('|'))
    print(names)

您在文件的行上迭代,并在每行上打印,所以最终打印的当然是。。。每一行(而不是你所期望的所有行)

为此,您需要首先收集行,这可以通过填充列表来完成:

lines = []
with open('user.txt', 'r') as f:
    data = f.read()
for line in data.split('\n'):
    lines.append(line.split('|'))

或者更简洁地说,理解:

with open('user.txt', 'r') as f:
    lines = [line.split('|') for line in f]

打印生成的lines列表将采用您期望的格式,即行列表,每行都是字段列表

试试这个:

def main():
    file = open("users.txt", "r")
    data = file.read()
    data2 = data.splitlines()
    data3 = [line.split("|") for line in data2]
    print data3

main()

相关问题 更多 >