gpt4 book ai didi

python - json 和编码字符串

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:17 25 4
gpt4 key购买 nike

我有这个字符串列表..

mylist = [u"čeština", u"maďarština", u"francouština"]

我需要将它转储到一个文件中,我正在为此使用 JSON

text = json.dumps(mylist)
FILE = open("file.txt", 'w')
FILE.write(text)
FILE.close()

但是当我在编辑器(使用 utf-8)中打开文件时,我看到了

["\u010de\u0161tina", "ma\u010far\u0161tina", "francou\u0161tina"]

当我从文件中读取列表时,我得到了正确的值。但是这个文件也应该以用户友好的方式显示,我也希望..

["čeština", "maďarština", "francouština"]

或至少

[u"čeština", u"maďarština", u"francouština"]

最佳答案

当您执行 json.dumps([u"čeština", u"maďarština", u"francouština"]) 时,您将获得字符串 '["\\u010de\u0161tina ", "ma\\u010far\u0161tina", "francou\\u0161tina"]'(使用有效的 Python 字符串文字形式)。 \u 转义符是 Unicode 在 JSON 中的表示方式,Python 的 JSON 模块默认会将所有非 ascii 字符转换为 Unicode 转义符。您可以通过在 json.dumps() 参数中使用 ensure_ascii=False 来禁用此行为。

这里有几个例子,首先是默认行为:

>>> json.dumps(lst)
'["\\u010de\\u0161tina", "ma\\u010far\\u0161tina", "francou\\u0161tina"]'
>>> print json.dumps(lst)
["\u010de\u0161tina", "ma\u010far\u0161tina", "francou\u0161tina"]

并且使用ensure_ascii=False:

>>> json.dumps(lst, ensure_ascii=False)
u'["\u010de\u0161tina", "ma\u010far\u0161tina", "francou\u0161tina"]'
>>> print json.dumps(lst, ensure_ascii=False)
["čeština", "maďarština", "francouština"]

现在要确保您使用 utf-8 编写此 Unicode 字符串,您可以使用 codecs模块:

import codecs, json
lst = [u"čeština", u"maďarština", u"francouština"]
json.dump(lst, codecs.open('file.txt', 'w', 'utf-8'), ensure_ascii=False)

请注意,我还使用了 json.dump(),它直接写入文件而不是 json.dumps()

关于python - json 和编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922394/

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