我正在尝试将日志文件拆分为2D列表。第一个列表在每个标记处分割,然后在第二个级别在每个换行符处分割。我得到了字符串并拆分它以获得第一个,但是当我循环它以再次拆分时,我得到了底部的错误。我已经看过并尝试了不同的东西而没有运气。对我来说似乎是正确的,但我对python来说相当新。
with open('log.txt', 'r') as f:
read_data = f.read().split('tag: "')
f.closed
for i in read_data:
print read_data[i].split()
错误:
File "parsing.py", line 6, in <module>
print read_data[i].split()
TypeError: list indices must be integers, not str
答案 0 :(得分:1)
with open('log.txt', 'r') as f:
data2D = [x.split() for x in f.read().split('tag: "') ]
答案 1 :(得分:0)
read_data
是一个字符串列表。然后,您将列表的每个字符串依次放入i
。到现在为止还挺好。但是,您尝试使用i
(这是一个字符串)作为索引。你应该做的是:
print i.split()
答案 2 :(得分:0)
代码的@Version 2:
Python中的字符串是不可变的。这意味着它们永远不会改变 - 你只能创建一个内容改变的新字符串:
>>> x = "Foo\r\n"
>>> x
"Foo\r\n"
>>> x.rstrip("\r\n")
"Foo"
>>> x
"Foo\r\n"
正如您所看到的,rstrip()
未更改名为x
的字符串的值。相反,它返回一个更改的字符串如果您不关心以前的值,则只需将名称x
重新分配给新值:
>>> x = x.rstrip("\r\n")
>>> x
"Foo"