我在python中有一个列表,它来自我以新行字符分割的文本文档。数据结尾在文本文档中以#
表示。我需要计算列表中的每个元素,然后将列表中的字符串拆分为制表符,创建一个二维列表。
我认为这很简单,但是,我没有从我的代码中得到结果。列表中的字符串根本没有分割,永远不会在\t
。
with open('names.txt') as names:
records = names.read().split('\n')
recordcount = 0
for item in records:
if item != '#':
recordcount += 1
item = item.split('\t')
print (records)
print (recordcount)
这是否与制表符很麻烦有关?或者我不能就地替换列表的元素吗?我应该使用我的拆分记录创建新列表吗?
答案 0 :(得分:3)
你只是重新分配一个局部变量。这不会影响列表的内容。试试这个:
for i, item in enumerate(records):
if item != '#':
recordcount += 1
records[i] = item.split('\t')
答案 1 :(得分:1)
您可以就地替换列表项,但item = item.split('\t')
只需重新分配本地变量item
。您可以通过以下方式轻松替换列表项: records[index] = item
。您可以使用enumerate
功能获得正确的index
。
您的代码已更改为您想要的内容:
with open('names.txt') as names:
records = names.read().split('\n')
recordcount = 0
for index, item in enumerate(records):
if item != '#':
recordcount += 1
item = item.split('\t')
records[index] = item
print (records)
print (recordcount)