-1

ログファイルを2Dリストに分割しようとしています。最初のリストはすべてのタグで分割され、次に2番目のレベルですべての改行で分割されます。文字列を取得して分割し、最初の文字列を取得しますが、ループして再度分割すると、下部にエラーが表示されます。私は運が悪かったので、いろいろなものを見て試しました。私には正しいように思えますが、私は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

コードの @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"
于 2012-12-10T00:35:35.547 に答える