如何将Unicode输出写入.csv以在Excel中使用?

时间:2015-09-17 10:07:55

标签: r excel unicode utf-8

我有一个包含我使用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显示为中文字符。

如何让它改为写中文字符?

1 个答案:

答案 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))

或者,这是一个更具端到端的例子。以下带有unicodecsvpip 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理解的格式编写输出,请参阅thisthis

希望这会有所帮助..

- ab1