如何创建子列表拆分字符串的子列表列表?

时间:2015-12-10 12:46:13

标签: python

我必须编写一个程序,从文件中读取并打印一个包含name,lastname列表的列表。到目前为止,除了正确的打印信息之外,我已经能够做到这一切:

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

5 个答案:

答案 0 :(得分:0)

file_obj = open('names.txt')
names = []
for name in file_obj.readlines():
    names.append(name.replace('\n','').split('|'))

print str(names)

如果这是[['name1', 'last1'], ['name2', 'last2'], ['name3', 'last3']]你想要它只是打印列表的字符串表示

答案 1 :(得分:0)

以下是执行此操作的代码:

def main():
    f = open("users.txt", "r")
    data = f.read()
    lst =  [line.split('|') for line in data.split()]
    print lst

main()

答案 2 :(得分:0)

试试这个:

//workflow/*[not(*)]

答案 3 :(得分:0)

您正在迭代文件的行,并在每条行上打印,因此最终打印的内容当然是......每一行(而不是 all正如您所期望的那样行。

要做到这一点,您需要先收集您的行,您可以通过填充列表来完成:

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列表将具有您期望的格式,即行列表,每行都是字段列表。

答案 4 :(得分:0)

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