Python:将字符串拆分两次以形成2D列表

时间:2012-12-09 23:32:14

标签: python string split

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

3 个答案:

答案 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"