gpt4 book ai didi

python - 使用 Unicode 将 CSV 转换为 YAML?

转载 作者:太空狗 更新时间:2023-10-29 21:46:16 32 4
gpt4 key购买 nike

我正在尝试使用 Python 3.4 将包含 Unicode 字符串的 CSV 文件转换为 YAML 文件。

目前,YAML 解析器将我的 Unicode 文本转义为 ASCII 字符串。我希望 YAML 解析器将 Unicode 字符串导出为 Unicode 字符串,不带转义字符。当然,我在这里误解了一些东西,非常感谢任何帮助。

奖励积分:如何使用 Python 2.7 完成此操作?

CSV 输入

id, title_english, title_russian
1, A Title in English, Название на русском
2, Another Title, Другой Название

当前 YAML 输出

- id: 1
title_english: A Title in English
title_russian: "\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043D\u0430\
\ \u0440\u0443\u0441\u0441\u043A\u043E\u043C"
- id: 2
title_english: Another Title
title_russian: "\u0414\u0440\u0443\u0433\u043E\u0439 \u041D\u0430\u0437\u0432\u0430\
\u043D\u0438\u0435"

所需的 YAML 输出

- id: 1
title_english: A Title in English
title_russian: Название на русском
- id: 2
title_english: Another Title
title_russian: Другой Название

Python 转换代码

import csv
import yaml
in_file = open('csv_file.csv', "r")
out_file = open('yaml_file.yaml', "w")
items = []

def convert_to_yaml(line, counter):
item = {
'id': counter,
'title_english': line[0],
'title_russian': line[1]
}
items.append(item)

try:
reader = csv.reader(in_file)
next(reader) # skip headers
for counter, line in enumerate(reader):
convert_to_yaml(line, counter)
out_file.write( yaml.dump(items, default_flow_style=False) )

finally:
in_file.close()
out_file.close()

谢谢!

最佳答案

我遇到了同样的问题,这就是我如何根据上面的示例解决它

out_file.write(yaml.dump(items, default_flow_style=False,allow_unicode=True) )

包含 allow_unicode=True 可解决此问题。

还专门针对 python2 使用 safe_dump 而不是 dump 来防止 !!python/unicode 与 unicode 文本一起显示。

out_file.write(yaml.safe_dump(items, default_row_style=False,allow_unicode=True)

关于python - 使用 Unicode 将 CSV 转换为 YAML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888612/

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