2016-05-12 22 views
0

これは一般的な初心者の問題であり、ここでスタック交換のような質問がたくさんありますが、私はそれらを検索していますが、でる。asciiコーデックは文字をエンコードすることができません、Python 2.6

for i in inputList: 
    for ii in i: 
     ii.replace(" u'\u2019'", "") #just trying to get rid of offending character 
     ii.encode("utf-8") 

def csvWrite(inList, outFile): 
    import csv 
    destination = open(outFile, 'w') 
    writer = csv.writer(destination, delimiter = ',') 
    data = inList 
    writer.writerows(data) 
    destination.close() 
csvWrite(inputList, output) 

が、私:私はこのようなCSVファイルに書き込むしようとしている

inputList = [[u'someplace', u'3901 West Millen Drive', u'Hobbs', u'NH', 
u'88240', u'37.751117', u'-103.187709999'], [u'\u0100lon someplace', u'3120 
S Las Vegas Blvd', u'Las Duman', u'AL', u'89109', u'36.129066', u'-145.168791']] 

:私は(リスト内の約1000品目)、次のようになり窮地からいくつかのデータを持っています、writer.writerows(データ)に、このエラーを取得しておいてください。

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in 
position 5: ordinal not in range(128) 

私は、リスト内のデータをエンコードするためにさまざまなものの束を試してみましたが、それでも常にエラーを取得しました。私はasciiにエンコードできない文字を無視するだけです。誰かが正しい方向に私を指すことができる、私はpython2.6を使用しています

+0

をはい、私はそれを行うことを意味したが、私はまだその行を修正した後、同じエラーが発生します –

答えて

1

この行は変わったようです:ii.replace(u"\u2019", u"")を意味しましたか?

+0

これはどちらも動作しません – Veltro

-1

あなただけのこれらの不正な文字を削除したい場合は、代わりにこのコードを使用することもできます。

for i in inputList: 
    for ii in i: 
     ii = "".join(list(filter((lambda x: ord(x) < 128), ii))) 
     print ii 

を出力:

someplace 
3901 West Millen Drive 
Hobbs 
NH 
88240 
37.751117 
-103.187709999 
lon someplace 
3120 S Las Vegas Blvd 
Las Duman 
AL 
89109 
36.129066 
-145.168791 

最終的なコードは次のようになります。

inputList = [[u'someplace', u'3901 West Millen Drive', u'Hobbs', u'NH', 
u'88240', u'37.751117', u'-103.187709999'], [u'\u0100lon someplace', u'3120 S Las Vegas Blvd', u'Las Duman', u'AL', u'89109', u'36.129066', u'-145.168791']] 

cleared_inputList = [] 

for i in inputList: 
    c_i = [] 
    for ii in i: 
     ii = "".join(list(filter((lambda x: ord(x) < 128), ii))) 
     c_i.append(ii) 
    cleared_inputList.append(c_i) 

def csvWrite(inList, outFile): 
    import csv 
    destination = open(outFile, 'w') 
    writer = csv.writer(destination, delimiter = ',') 
    data = inList 
    writer.writerows(data) 
    destination.close() 


csvWrite(cleared_inputList, output) 
+0

これはまだ 'inputList'を更新していないので、文字 'u' \ u2019 ' –

+0

@ J.Hammondのためにエラーをスローします。 – Veltro

+0

コードが正常に動作しています@ J.Hammond – Veltro

関連する問題