0

私はpythonが初めてです。先週初めて使い始めました。今まで、私はすぐにスピードを上げ、コーディングを順調に進めてきました。

文字列を保持するリスト変数 (rawData) があります。

rawData[0:2]

['00:00:10.000000,     500.000000000,       5.00000000,    80.00,\n',
 '00:00:10.002667,     500.000000000,       5.00000000,    80.00,\n']

既存のデータを使用して、次のことを行うのに苦労しています。

rawData[0:2]

[['00:00:10.000000', '500.0', '5.0', '80.00'],
 ['00:00:10.002667', '500.0', '5.0', '80.00']]

御時間ありがとうございます。それは有り難いです。

4

2 に答える 2

1

このリストがあるとします

>>> 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']]
于 2013-10-24T01:08:50.710 に答える
0

splitのすべてのインスタンスが所有するメソッドでbasestring、文字列を文字列のリストに変換し、特定の文字で分割します。rstrip右端の文字を削除します (末尾のコンマを削除します)。次のようなことを試してください:

[ x.strip().rstrip(',').split(',') for x in rawData ]
于 2013-10-24T00:38:47.963 に答える