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

Python:将字符串拆分两次以形成2D列表,python,string,split,Python,String,Split,我正在尝试将日志文件拆分为二维列表。第一个列表在每个标记处拆分,然后在第二个级别在每个换行符处拆分。我得到字符串并将其拆分以获得第一个字符串,但是当我循环遍历它以再次拆分它时,我在底部得到了错误。我看了看,试了不同的东西,但运气不好。对我来说这似乎是对的,但我对python还是相当陌生的 with open('log.txt', 'r') as f: read_data = f.read().split('tag: "') f.closed for i in read

我正在尝试将日志文件拆分为二维列表。第一个列表在每个标记处拆分,然后在第二个级别在每个换行符处拆分。我得到字符串并将其拆分以获得第一个字符串,但是当我循环遍历它以再次拆分它时,我在底部得到了错误。我看了看,试了不同的东西,但运气不好。对我来说这似乎是对的,但我对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
文件“parsing.py”,第6行,在
打印读取数据[i].split()
TypeError:列表索引必须是整数,而不是str

读取数据
是字符串列表。然后将列表中的每个字符串依次放入
i
。到目前为止,一切顺利。但是,您可以尝试使用
i
(这是一个字符串)作为索引。你应该做的是:

print i.split()

@代码的版本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"

显然,
i
不是
读取数据的索引。
print i.split()
怎么样?
read\u data
中的每个
i
都是一个字符串。顺便说一句,
f.closed
什么也不做。这不是关闭文件的方式,而且在任何情况下,它都会在离开带有
块的
时自动关闭。它不是2d列表,y的缺失在哪里?
>>> x = x.rstrip("\r\n")
>>> x
"Foo"