列表中意外放置的列表?

时间:2017-07-24 23:03:23

标签: python python-3.x io

当我运行这个文件时,一切似乎都正确计算,除了我最终得到列表中的各个列表元素。这使得我很难对列表的各个部分执行一些其他操作。

我的代码:

growthslist = []
f = open("growths.txt",'r')
count = 0
for line in f:
    count+=1
charnum = int((count/9))
f.seek(0)
for i in range(count):
    growthslist.append(f.readline().splitlines())
namelist = []
namecounter = 0
for i in range(charnum):
    namelist.append(growthslist[namecounter])
    namecounter +=9
print(namelist)

当我运行此代码时,它会返回[['测试1'],['测试2'],['测试3'],[& #39;测试4'],['测试5']]。 我能做些什么吗?

3 个答案:

答案 0 :(得分:3)

这部分:

growthslist.append(f.readline().splitlines())

你的问题。 str.splitlines()返回一个列表。这就是为什么你看到列表而不是平面列表的原因。但是,由于您已经在使用str.splitlines(),因此无论如何都不需要file.readline()。只需使用:

growthslist.append(f.readline())

如果您有额外的空格需要从行中删除,请使用str.strip()

growthslist.append(f.readline().strip())

如@idjaw的评论中所述,实现目标的另一种方法是阅读文件的内容,然后使用splitlines()分隔每行删除任何尾随空白:

f.read().splitlines()

另外,请考虑使用context manager statement with。无论程序执行过程中出现任何错误或问题,它都将确保您的文件始终处于关闭状态。

答案 1 :(得分:0)

f.readline()返回一行。没理由拆分它。 .splitlines()将其变为列表。

答案 2 :(得分:0)

你可以试试这个:

f = [i.strip('\n') for i in open('filename.txt')]