2

私はこの単純な python スクリプトを持っています:

with open("records.csv", "r") as f:
    for line in f:
        print line

records.cvs次のような多くの行が含まれています。

,0.055,,,,109.889456433,119.043269058,128.455997141,,,,-0.607526459169,-1.28987216622,-1.36255539212,-0.0783128865694,-0.0745923352488,-0.0722692557059,0.325311331044,0.61140286319,0.0509661014105,0.719556483734

ただし、上記のスクリプトは、文字間にスペースを入れて次の出力を出力します。

 ■、0。0 5 5 , , , , 1 0 9 . 8 8 9 4 5 6 4 3 3 , 1 1 9 . 0 4 3 2 6 9 0 5 8 , 1 2 8 . 4 5 5 9 9 7 1 4 1 , , , , - 0 . 6 0 7 5 2 6 4 5 9 1 6 9 、 - 1 。2 8 9 8 7 2 1 6 6 2 2 , - 1 . 3 6 2 5 5 5 3 9 2 1 2 , - 0 . 0 7 8 3 1 2 8 8 6 5 6 9 4 , - 0 . 0 7 4 5 9 2 3 3 5 2 4 8 8 , - 0 . 0 7 2 2 6 9 2 5 5 7 0 5 9 、 0 。3 2 5 3 1 1 3 3 1 0 4 4 , 0 . 6 1 1 4 0 2 8 6 3 1 , 0 . 0 5 0 9 6 6 1 0 1 4 1 0 5 , 0 . 7 1 9 5 5 6 4 8 3 7 3 4

出力にスペースが含まれる理由と、それらを削除する方法を教えてください。

4

2 に答える 2

3

結果を再現できません。あなたの例のような行数のファイルを作成しましたが、行間に空白行が出力されますが (行末に 1 行、行末に 1 行print)、文字間にスペースはありません。

印刷された行の先頭にある面白い四角形の記号に注意してください。ファイルのエンコーディングに問題がある可能性があります。

于 2013-06-20T18:01:47.637 に答える
1

おそらく、次を使用するつもりですcsv.reader

import csv

with open("records.csv", "r") as f:
    csvin = csv.reader(f)
    for line in csvin:
        print line

line次に、CSVファイルの各行の列のリストになります-そして、それを好きなように操作します(たとえば、可能な場合はそれぞれを整数/浮動小数点数に変換します)。

最初に印刷できない文字を除外してみてください...

import reの後に、次のようwith statementに変更します。

lines = (re.sub('[^-0-9.,]', '', line) for line in f)
csvin = csv.reader(lines)
于 2013-06-20T17:42:46.040 に答える