2016-04-08 12 views
0

私はCSVリーダー異なる出力 - Pythonの

1000年、2000年、... 39000.

のような値を持つフィールド(列)を持つSome.csvと呼ばれるファイルを持っています

私は39000を持つファイルだけが私はこれをWindows上で実行する場合は、次のPythonスクリプト

import os 
import csv 

with open('Somenew.csv', 'w') as fw: 
    writr = csv.writer(fw, delimiter=',') 
    with open('Some.csv','r') as fr: 
    reader = csv.reader(fr, delimiter = ',') 
    for row in reader: 
     if row[2] == '39000': writr.writerow(row) 

は、今ではSomenew.csvこの

のように見え書いて欲しかったです

XXXX、XXXX、39000、xxxxは、

YYYY、YYYY、39000、YYYY、YYYY

をxxxxをしかし、Linuxの(Ubuntuの14.04LTS)上で実行する場合があり、余分な改行が追加されません。

これには何らかの理由がありますか?それはおそらくコンパイラのためでしょうか?あなたは、Python 2.xのを使用している場合

+0

Windowsは '\ n \ 'の代わりにテキストファイルの行末に' \ r \ n'を使用するからです。単純な修正は、CSVファイルをバイナリファイルとして読み書きすることですが、Python 3には他にもオプションがあります。どのバージョンのPythonを使用していますか? –

+2

http://stackoverflow.com/questions/1170214/pythons-csv-writer-produces-wrong-line-terminator/1170297#1170297 – LearnerEarner

+0

2.7.something(おそらく10)。ありがとうございます。 'r'と 'w'を 'rb'と 'wb'に変更しますか? – Sood

答えて

1

あなたはcsvファイルに対してwbモードを使用する必要があります。

https://docs.python.org/2/library/csv.html#csv.writer

たcsvfileがファイルオブジェクトである場合は、それがフラグ「b」で開かれなければなりませんそれが違いを生むプラットフォーム。

0

ファイルをバイナリモードで開こうとしてください。 This答えが役に立つかもしれません。

関連する問題