このリストがあるとします
>>> L = ['00:00:10.000000, 500.000000000, 5.00000000, 80.00,\n',
... '00:00:10.002667, 500.000000000, 5.00000000, 80.00,\n']
このように各行をリストに分割できます
>>> [item.split() for item in L]
[['00:00:10.000000,', '500.000000000,', '5.00000000,', '80.00,'], ['00:00:10.002667,', '500.000000000,', '5.00000000,', '80.00,']]
しかし、さらに処理が必要です。フィールドごとに処理が異なるため、すべてをリスト内包表記で処理しようとすると面倒で面倒です。代わりに、ヘルパー関数を記述することから始めます。process_item
「 」としましょう
>>> def process_item(item):
... return item.split()
...
>>> [process_item(item) for item in L]
[['00:00:10.000000,', '500.000000000,', '5.00000000,', '80.00,'], ['00:00:10.002667,', '500.000000000,', '5.00000000,', '80.00,']]
process_item
これで、個々のフィールドを処理するためのコードを追加できるようになりました。
>>> def process_item(item):
... f1, f2, f3, f4 = item.split()
... f1 = f1.rstrip(',')
... f2 = f2.rstrip(',') # more code needed here
... f3 = f3.rstrip(',') # more code needed here
... f4 = f4.rstrip(',')
... return [f1, f2, f3, f4]
f2 と f3 を修正する方法を見てみましょう
>>> f2 = '500.000000000'
>>> f2[:f2.find('.')+2]
'500.0'
.
しかし、f2に no がなければ、そうしたくないでしょう。
>>> f2 = '500'
>>> f2[:f2.find('.')+2]
'5'
そのため、 でそれをテストする必要がありますif
。今すぐすべてをまとめてください
>>> def process_item(item):
... f1, f2, f3, f4 = item.split()
... f1 = f1.rstrip(',')
... f2 = f2.rstrip(',')
... f3 = f3.rstrip(',')
... f4 = f4.rstrip(',')
... if '.' in f2:
... f2 = f2[:f2.find('.')+2]
... if '.' in f3:
... f3 = f3[:f3.find('.')+2]
... return [f1, f2, f3, f4]
...
>>> [process_item(item) for item in L]
[['00:00:10.000000', '500.0', '5.0', '80.00'],
['00:00:10.002667', '500.0', '5.0', '80.00']]