当我运行这个文件时,一切似乎都正确计算,除了我最终得到列表中的各个列表元素。这使得我很难对列表的各个部分执行一些其他操作。
我的代码:
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']]。 我能做些什么吗?
答案 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')]