私はこのコードを持っています:
printinfo = title + "\t" + old_vendor_id + "\t" + Apple_id + '\n'
# Write file
f.write (printinfo + '\n')
しかし、実行するとこのエラーが発生します。
f.write(printinfo + '\n')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 7: ordinal not in range(128)
これを書くのに苦労しています:
Identité secrète (Abduction) [VF]
アイデアがあれば、修正方法がわからない。
乾杯。
更新:これは私のコードの大部分ですので、あなたは私がやっていることを見ることができます:
def runLookupEdit(self, event):
newpath1 = pathindir + "/"
errorFileOut = newpath1 + "REPORT.csv"
f = open(errorFileOut, 'w')
global old_vendor_id
for old_vendor_id in vendorIdsIn.splitlines():
writeErrorFile = 0
from lxml import etree
parser = etree.XMLParser(remove_blank_text=True) # makes pretty print work
path1 = os.path.join(pathindir, old_vendor_id)
path2 = path1 + ".itmsp"
path3 = os.path.join(path2, 'metadata.xml')
# Open and parse the xml file
cantFindError = 0
try:
with open(path3): pass
except IOError:
cantFindError = 1
errorMessage = old_vendor_id
self.Error(errorMessage)
break
tree = etree.parse(path3, parser)
root = tree.getroot()
for element in tree.xpath('//video/title'):
title = element.text
while '\n' in title:
title= title.replace('\n', ' ')
while '\t' in title:
title = title.replace('\t', ' ')
while ' ' in title:
title = title.replace(' ', ' ')
title = title.strip()
element.text = title
print title
#########################################
######## REMOVE UNWANTED TAGS ########
#########################################
# Remove the comment tags
comments = tree.xpath('//comment()')
q = 1
for c in comments:
p = c.getparent()
if q == 3:
Apple_id = c.text
p.remove(c)
q = q+1
Apple_id = Apple_id.split(':',1)[1]
Apple_id = Apple_id.strip()
printinfo = title + "\t" + old_vendor_id + "\t" + Apple_id
# Write file
# f.write (printinfo + '\n')
f.write(printinfo.encode('utf8') + '\n')
f.close()
ファイルに書き込む前にUnicodeを明示的にエンコードする必要があります。そうでない場合、PythonはデフォルトのASCIIコーデックを使用してエンコードします。
エンコードを選択して、それを使い続けます。
f.write(printinfo.encode('utf8') + '\n')
または io.open()
を使用して、ファイルへの書き込み時にエンコードするファイルオブジェクトを作成します。
import io
f = io.open(filename, 'w', encoding='utf8')
あなたが読むことができます:
Pragmatic Unicode by Ned Batchelder
すべてのソフトウェア開発者がユニコードと文字セットについて絶対的かつ積極的に知っておくべき絶対的な最小値(言い訳はありません!) by Joel Spolsky
続行する前に。