0

次のように、複数のデータ行を持つファイルを読み込む必要があります。

1 D 65.33383 BAZ 308.1043 Year 2001 Month 01 Day 01 Lat 6.90 Long 126.58 Mag 6.4 Origin Time 06:57:04.2

ファイルを行に分割する必要があります。これを行った後、各行を各スペースの変数に分割します。

これまでのところ、次のようなネストされたループを使用しています。

for line in open("filename", 'r').readlines():
 variable = string.split(line)

 values = [variable]
 for value in values
 value = string.split(' ')
 year, month = value[0], value [1]

私の問題は、2 番目の for ループのどの部分が必要なのかわからないことです。つまり、... で ...

私はPythonでのプログラミングにまったく慣れていません。

4

3 に答える 3

0
with open('data.txt', 'r') as data:
    for _input in data:
        line = _input.split(' ')
        data = {'Index':line[0],
                'Origin Time':line[-3:][-1].strip()
                }
        data.update(dict(zip(line[1:-3][0::2], line[1:-3][1::2])))
        print data
于 2013-07-26T10:21:12.067 に答える
0

あなたが何を達成しようとしているのか正確にはわかりませんが、特に不明なことの1つは、「各行を各スペースの変数に分割する」という表現です。

ただし、それぞれが行から解析されたデータを含む辞書のリストで構成される出力を取得する必要があると仮定すると、次のものが役立ちます。

data = []
with open("file.txt") as f:
    for line in f:
        lineData = {}
        lineSplit = line.split()
        for i in range(1,len(lineSplit)-1,2):
            lineData[lineSplit[i]] = lineSplit[i+1]
        data.append(lineData)
print data

これにより、次のような出力が得られます。

[{'Origin': 'Time', 'D': '65.33383', 'BAZ': '308.1043', 'Long': '126.58', 'Month': '01', 'Mag': '6.4', 'Year': '2001', 'Lat': '6.90', 'Day': '01'}]

ディクショナリはソートされていないため、キーと値はランダムな順序で表示されます。線をスペースで分割する必要があり、原点と時間の間にスペースがあるため、原点時間がキーと値になったことに注意してください。乾杯!

于 2013-07-26T10:21:38.763 に答える
0

この場合、一部のエントリにスペースが含まれているため、正規表現を使用するのがおそらく最も簡単です。

次の式は、数字以外のすべてを検出しその後に数字、ドット、およびコロンのみで構成されたものを検出します。

import re
key_val = re.compile(r'\s*([^\d]+)\s+([\d.:]+)\s*')

mapping = dict(key_val.findall(line))

これにより、辞書オブジェクトが生成されます。

>>> import re
>>> line = '1 D 65.33383 BAZ 308.1043 Year 2001 Month 01 Day 01 Lat 6.90 Long 126.58 Mag 6.4 Origin Time 06:57:04.2\n'
>>> key_val = re.compile(r'\s*([^\d]+)\s+([\d.:]+)\s*')
>>> key_val.findall(line)
[('D', '65.33383'), ('BAZ', '308.1043'), ('Year', '2001'), ('Month', '01'), ('Day', '01'), ('Lat', '6.90'), ('Long', '126.58'), ('Mag', '6.4'), ('Origin Time', '06:57:04.2')]
>>> dict(key_val.findall(line))
{'D': '65.33383', 'BAZ': '308.1043', 'Long': '126.58', 'Month': '01', 'Origin Time': '06:57:04.2', 'Mag': '6.4', 'Year': '2001', 'Lat': '6.90', 'Day': '01'}
于 2013-07-26T10:21:43.557 に答える