2016-09-13 13 views
0

私はいくつかのcsvファイルを持っていますが、これは望ましくない ""などの文字が含まれている場合もあれば含まれていない場合もあるので、csvそのための例では、より標準的な文字に置き換え、それらの文字をCSVファイル(またはその内容)を送り出す:Pythonのcsvで特殊文字のリストを置き換える方法

bad_chars = '“”à' 
good_chars = '""a' 

を問題これまでの私のコードは、おそらく間違ったエンコーディングでcsvファイルを作るように見えるということですか?私の出力csvが誤った正規表現のエンコーディングを強制しないことを確認してください - おそらくパンダを使用していますか?

試み:

import csv, string 
upload_path = sys.argv[1] 
input_file = open('{}'.format(upload_path), 'rb') 
upload_csv = open('{}_fixed.csv'.format(upload_path.strip('.csv')), 'wb') 
data = csv.reader(input_file) 
writer = csv.writer(upload_csv, quoting=csv.QUOTE_ALL) 
in_chars = '\xd2\xd3' 
out_chars = "''" 
replace_list = string.maketrans(in_chars, out_chars) 

for line in input_file: 
    line = str(line) 
    new_line = line.translate(replace_list) 
    writer.writerow(new_line.split(',')) 

input_file.close() 
upload_csv.close() 
+0

ないあなたが提起した問題にdirectl解決策が、見てみましょうunidecodeライブラリhttps://pypi.python.org/pypi/Unidecode/0.04.9 - ASCII以外の文字をASCII近似(スマート引用符からストレート引用符など)に変換します。 – Sixhobbits

答えて

1

あなたはpandasタグであなたの質問をスタンプとして - ここでパンダのソリューションです:

import pandas as pd 

(pd.read_csv('/path/to/file.csv') 
    .replace(r'RegEx_search_for_str', r'RegEx_replace_with_str', regex=True) 
    .to_csv('/path/to/fixed.csv', index=False) 
) 
+0

dfに対してstr.translateを呼び出してみませんか? – Boud

+0

@Boud、 '.str.'メソッドは1つのカラムにしか適用できないので、' df.apply(lambda x:x.astype(str).str.translate(...) ) ' – MaxU

+0

私はあなたの翻訳を参照してくださいperfループ対regexの置き換えを参照してください – Boud

関連する問題