Python 意外地将列表放置在列表中?
当我运行这个文件时,所有内容似乎都计算正确,除了列表中的各个列表元素。这使得我很难对列表的各个部分执行其他一些操作 我的代码:Python 意外地将列表放置在列表中?,python,python-3.x,io,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().splitline
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)
当我运行这段代码时,它返回['test1']、['test2']、['test3']、['test4']、['test5']。
对此我能做些什么吗?f.readline()返回一行。没有理由分开它.splitlines()
将其转换为列表。f.readline()
返回一行。没有理由分开它.splitlines()
将其转换为列表。此部分:
growthslist.append(f.readline().splitlines())
这是你的问题str.splitlines()
返回一个列表。这就是为什么你看到的是一个列表列表,而不是一个简单的列表。但是您不需要使用str.splitlines()
,因为您已经在使用file.readline()
。就用这个:
growthslist.append(f.readline())
如果需要从行中删除多余的空格,请使用str.strip()
:
正如@idjaw在评论中指出的,实现目标的另一种方法是读取文件的内容,然后使用splitlines()
分隔每一行,删除任何尾随空格:
f.read().splitlines()
也可以考虑使用。它将确保您的文件始终处于关闭状态,无论程序执行过程中出现任何错误或问题。
此部分:growthslist.append(f.readline().splitlines())
这是你的问题str.splitlines()
返回一个列表。这就是为什么你看到的是一个列表列表,而不是一个简单的列表。但是您不需要使用str.splitlines()
,因为您已经在使用file.readline()
。就用这个:
growthslist.append(f.readline())
如果需要从行中删除多余的空格,请使用str.strip()
:
正如@idjaw在评论中指出的,实现目标的另一种方法是读取文件的内容,然后使用splitlines()
分隔每一行,删除任何尾随空格:
f.read().splitlines()
也可以考虑使用。它将确保无论程序执行过程中出现任何错误或问题,您的文件始终处于关闭状态。
您可以尝试以下操作:f = [i.strip('\n') for i in open('filename.txt')]
您可以尝试以下方法:
f = [i.strip('\n') for i in open('filename.txt')]
删除
.splitlines()
。您可能会在代码中发现有用的内容<代码>对于计数,枚举(f)中的行:代码>删除.splitlines()
。您可能会在代码中发现有用的内容<代码>对于计数,枚举(f)中的行:这很奇怪,因为当我只使用f.readline时,我会得到EOL字符。这是我的输出:['Test1\n','Test2\n','Test3\n','Test4\n','Test5\n']
@我知道这太恶心了。如果您有多余的空格,请使用str.strip()
将其删除。我会更新我的答案以包括这一点。@非常恶心,很高兴我能帮上忙:)或者,我想你可以做f.read().splitlines()
。不过我需要测试一下,我刚刚测试过,我相信你是对的。谢谢我将把它添加到我的答案中。不过这很奇怪,因为当我只使用f.readline时,我会得到EOL字符。这是我的输出:['Test1\n','Test2\n','Test3\n','Test4\n','Test5\n']
@我知道这太恶心了。如果您有多余的空格,请使用str.strip()
将其删除。我会更新我的答案以包括这一点。@非常恶心,很高兴我能帮上忙:)或者,我想你可以做f.read().splitlines()
。不过我需要测试一下,我刚刚测试过,我相信你是对的。谢谢我会在我的回答中加上这个。