我有一个包含我使用UTF-8工作的中文字符的数据集。部分数据如下所示:
encod cKeyword
UTF-8 <U+5169><U+7528> <U+5305> 27 bloide herme
UTF-8 <U+593E> <U+62C9><U+934A> <U+9577> loewe
UTF-8 <U+5169><U+7528> <U+5305> <U+8FF7><U+4F60> 31 lim pashli phillip
UTF-8 <U+5305> <U+624B><U+62FF> givenchy pandora
当我使用write.csv(data, "file.csv", fileEncoding = "UTF-8")
时,我得到的.csv文件在打开时会在Excel中显示完全相同的内容。但我需要将Unicode显示为中文字符。
如何让它改为写中文字符?
答案 0 :(得分:1)
您的字符用unicode code points表示。
Python 2.7.10
>>> s = '\u5169' # <U+5169> represented in unicode
>>> print s.decode('unicode_escape')
兩
在Excel中,以下函数会将您的代码点转换为字符表示形式:
=UNICHAR(HEX2DEC(5169))
或者,这是一个更具端到端的例子。以下带有unicodecsv
(pip install unicodecsv
)模块的Python 2.7代码会将您的R(r.csv
)输出转换为Excel输入(excel.csv
):
import unicodecsv as csv, re
csvwrite = open('excel.csv', 'wb')
w = csv.writer(csvwrite, encoding='utf-8')
with open('r.csv', 'rb') as csvread:
rows = csv.reader(csvread, delimiter='\t')
for row in rows:
p = re.compile('\<U\+([0-9a-fA-F]+)\>')
iterator = p.finditer(row[1])
for match in iterator:
s = '%s%s' % ('\u', match.group().replace('U+', '').replace('<', '').replace('>', ''))
row[1] = row[1].replace(match.group(), s.decode('unicode_escape'))
w.writerow(row)
获取生成的excel.csv
并导入Excel(不仅仅是打开),但是在this发布后。
我没有安装R,但它也可能以Excel理解的格式编写输出,请参阅this和this。
希望这会有所帮助..
- ab1