gpt4 book ai didi

python - 将包含变音符号的数据导出到 Excel 可读的 .csv 中

转载 作者:行者123 更新时间:2023-11-28 20:25:47 25 4
gpt4 key购买 nike

我在 Mac OS X 10.8.2 上使用 Python 2.7.2我需要编写一个 .csv 文件,其中通常包含几个“变音符号”,如 ä、ö 和 ü。 当我编写 .csv 文件时,Numbers 和 Open Office 都能够正确读取 csv,并且显示变音符号没有任何问题。

但是如果我用 Microsoft Excel 2004 阅读它,那么显示的文字是这样的:

TuÃàrlersee

我知道,Excel 在处理 UTF-8 时有问题。我读到 2007 以下的 Excel 版本无法正确读取 UTF-8 文件,即使您设置了 UTF-8 BOM(字节顺序标记)也是如此。我正在使用以下行设置 UTF-8 BOM:

e.write(codecs.BOM_UTF8)

所以我下一步尝试的不是将其导出为 UTF-8 文件,而是我想将字符编码设置为 mac-roman。通过以下行,我从 utf-8 解码值并使用 mac-roman 对其重新编码。

projectName = projectDict['ProjectName'].decode('utf-8').encode('mac-roman')

但随后我收到以下错误:

UnicodeEncodeError: 'charmap' codec can't encode character u'\u0308' in position 6: character maps to <undefined>

我如何将此数据导出到 .csv 中,Excel 也能够正确读取变音符号?Python 在内部处理 UTF-8 中的所有内容。或者我可能没有正确理解解码/编码。在 Python 3.0 中,他们已经调整了整个编码/解码模型,但我需要留在 2.7.2 版本上..

我正在这样使用 DictWriter:

w = csv.DictWriter(e, fieldnames=fieldnames, extrasaction='ignore', delimiter=';', quotechar='\"', quoting=csv.QUOTE_NONNUMERIC)
w.writeheader()

最佳答案

\u0308 是一个组合分音符;你需要 normalize your unicode string在解码为 mac-roman 之前:

import unicodedata

unicodedata.normalize('NFC', projectDict['ProjectName'].decode('utf-8')).encode('mac-roman')

演示,在规范化为组合字符后,将非规范化形式的 ä 字符(a 加上组合分音符)编码为 mac-roman:

>>> unicodedata.normalize('NFC', u'a\u0308').encode('mac-roman')
'\x8a'

我过去曾使用这种技术为预先知道其平台编码的特定客户生成 Excel 的 CSV(Excel 将以当前的 Windows 编码 IIRC 解释文件)。在这种情况下,我编码为 windows-1252

关于python - 将包含变音符号的数据导出到 Excel 可读的 .csv 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com