所以我有一个很大的csv法语动词,我用来制作一个程序,在csv中,带有重音字符的动词包含代码而不是实际的重音:
ê tre是ê tre,例如(至少我在Excel中打开文件时)
这是csv:
https://raw.githubusercontent.com/ianmackinnon/inflect/master/french-verb-conjugation.csv
至少在Chrome和Firefox中,代码会转换为正确的重音符号。我想知道是否将字符串在python中导入给定的变量,即。
...
for row in reader:
inf_lst.append(row[0])
verb = inf_lst[2338]
#(verb = être)
如果有一个简单/内置的方法用正确的unicode打印出来以给出“être”?
我知道你可以通过在每个字符串中用ê替换ª来实现这一点,但由于这必须针对每种不同的可能重音进行,我想知道是否有更简单的方法。 谢谢,
答案 0 :(得分:1)
您可以通过在字符串前加上'u'来使用unicode编码。
>>> foo = u'être' >>> print foo être
答案 1 :(得分:0)
这一切都归结为数据的字符编码。它可能是utf-8编码的,您正在使用本地代码页的Windows工具中查看它,该代码页为流提供了不同的显示。 csv doc examples。
中介绍了如何使用文件进行读/写您已经为我们提供了一个压缩的utf-8编码网页,requests
模块擅长处理这类事情。所以,您可以阅读csv:
>>> import requests
>>> import csv
>>> resp=requests.get("https://raw.githubusercontent.com/ianmackinnon/inflect/master/french-verb-conjugation.csv",
... stream=True)
>>> try:
... inf_lst = list(csv.reader(resp.iter_lines(decode_unicode=True)))
... finally:
... del resp
...
>>> len(inf_list)
5362
答案 2 :(得分:0)
您有一个UTF-8编码的文件。 Excel喜欢该编码以字节顺序标记字符(U + FEFF)开头,或者它假定您的Windows版本的默认ANSI编码。要使用BOM获取UTF-8,请使用Notepad++之类的工具。在Notepad ++中打开文件。在编码菜单上,选择“在UTF-8-BOM中编码”并保存。现在它将在Excel中正确显示。
要编写Excel可以打开的文件,请使用编码utf-8-sig
并编写Unicode字符串:
import io
with io.open('out.csv','w',encoding='utf-8-sig') as f:
f.write(u'être')