2016-04-07 9 views
0

私はcsvファイルしか持っていません。例えばPython:csvからnon ascii charectersを削除する

['com.manager', '2016', '16.1.23', 'en', 'kinzie', '2015-04-11T17:36:23Z', '1428773783781', '2016-03-11T09:53:45Z', 'df', '5', "\xa5\x06`'", '\xc0\x03"', '\xa2{\xac ===]\xa9}\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7>', '', '', '', 'https://play.google.com/apps/publish?account=sd#ReviewDetailsPlace:p=com.manager&reviewid=gp:AOqpTOEcQQGmjFcd-bFfU372DTrxh'] 

ため私は、読者が矛盾列番号を示している四列のCSV

with open('/Users/duttaam/Downloads/test1.csv', 'rU') as csvfile: 
    reader_obj = csv.reader(x.replace('\0', '') for x in csvfile) 
    rownum=0 
    for row in reader_obj: 
     rownum += 1 
     if len(row) != 16: 
      print rownum 
      print row 

を読み取るために、次のPythonコードを使用しています。しかし、私は区切り文字(、)を数えたとき、それはうまく表示されます。私が見ることができる問題は、上の行に示されている例の行ではないASCII文字です。私はいくつかの文字に変換されたemojisがあると思います。

私は全体のCSVファイルにこれを適用しない方法を文字列から非印刷可能な文字を削除する機能を思い付いた(ポスト次へありがとう:Stripping non printable characters from a string in python)?

def removeSpecialcahr(s): 
     printable = set(string.printable) 
     return filter(lambda x: x in printable, s) 

が処理する方法はありますcsvを削除し、印刷できない文字やASCII以外の文字をすべて削除しますか?

ありがとうございます。

答えて

4

ファイルから非ASCII文字をドロップするには、openコールをcodecs.open()に置き換えます。あなた自身のエラーハンドラを定義することもできます...:

import codecs 
codecs.open('file.csv', 'r', encoding='ascii', errors='ignore') 
+0

ありがとう@joeforker。私はコードを使用して非アスキー文字を削除しましたが、次のコードを使用してファイルオブジェクト 'read_obj = csv.reader(x.replace( '\ 0'、 '')をcsvfileで読み取ったとき) rownum = reader_objにおける行の0 : ROWNUM + = 1 でlen(行)= 16とします! 印刷ROWNUM 印刷行 印刷LEN(列) 'CSVリーダーが正しくファイルを読んでいません。あなたのコードは私の質問に答えます。 csvを効果的に読む他の方法はありますか? – Dutta

+0

unicodecsvモジュールを試すことができます:https://pypi.python.org/pypi/unicodecsv – joeforker

関連する問題