1

CSVファイルからリストを作成しました。次のようになります。

['18', '29', '0'...'0', '-14', '9']

最初にテキスト要素があり、それをポップしました。現在、Pythonは適切な数値のようにリスト要素を処理しません。たとえば、要素をfloatに解析しようとすると、次のエラーメッセージが表示されます。

ValueError: could not convert string to float: -

私のコードは次のようになります:

list2=[[float(column) for column in row] for row in list1]

またはこれ:

list2 = [map(float, x) for x in list1]

どちらのバージョンでも同じ結果が得られます。別のデータ型を試すと、次のようなメッセージが表示されます。

ValueError: invalid literal for int() with base 10: '-'

Pythonにダッシュを数値に正しく解析させる方法を教えてもらえますか?

4

1 に答える 1

7

作成しているリストは1Dのように見えますが、それを解析しようとすると、各要素の各文字をfloatに変換しようとする2Dリストとして扱われます(したがって、実行しようとするとエラーがスローされますfloat('-')) 。問題を解決するには、行を次のように置き換えてみてください。

list2 = map(float, list1)

また、その行の前に追加print list1して、リストが意図した構造になっていることを確認する必要があります。

于 2012-06-29T23:14:24.637 に答える