-1

我正在尝试将日志文件拆分为 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
4

3 回答 3

1
with open('log.txt', 'r') as f:
    data2D = [x.split() for x in f.read().split('tag:         "') ]
于 2012-12-10T00:08:36.970 回答
0

read_data是一个字符串列表。然后,您将列表中的每个字符串依次放入i. 到目前为止,一切都很好。但是,然后您尝试使用i(这是一个字符串)作为索引。你应该做的是:

print i.split()
于 2012-12-09T23:55:23.360 回答
0

@您的代码的第 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"
于 2012-12-10T00:35:35.547 回答