gpt4 book ai didi

Python-3x Unicode 打印与写入

转载 作者:行者123 更新时间:2023-12-01 03:48:02 25 4
gpt4 key购买 nike

我创建了以下程序来尝试解决我认为是 unicode 问题的问题:

s = '7/02/16;07:30:00;São Paulo-8;Reachability: 18.5%'
s_type = type(s)
print ("variable s contains: ",s)
print ("variable s type is: ", s_type)
text_file = open("test_file.txt", "w")
text_file.write(s)
text_file.close()

程序运行时,打印语句提供以下输出:

variable s contains:  7/02/16;07:30:00;São Paulo-8;Reachability: 18.5%
variable s type is: <class 'str'>

当写入文件时,我收到以下错误:

Traceback (most recent call last):
File "/Users/tglund/Projects/Python/thousandeyes/unicode.py", line 6, in <module>
text_file.write(s)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe3' in position 18: ordinal not in range(128)

我已经从头到尾阅读了unicode文档https://docs.python.org/3/howto/unicode.html

但尚未成功破解密码。

我可以复制分配给变量 s 的字符串并将其粘贴到文件中,保存文件,然后“更多”该文件。我使用的是 Mac,并且该字符串正确显示在我的屏幕上。 Python print 语句正确显示字符串。

我的所有目标是创建一个 csv 文本文件,其中分隔符为“;”。问题似乎是位置字段中第二个带重音的字符。 s 的字符串包含以下字段:日期、位置、消息

如果您能提供有关如何解决该问题的任何帮助,我们将不胜感激。

最佳答案

即使在具有不同默认值的系统上也可以重现您的错误,例如:

text_file = open("test_file.txt", "w", encoding='ascii')
text_file.write('\xe3')

问题是您的默认文本编码是 ascii。或者至少 Python 是这么理解的。请参阅 open() 下的“编码” ,和locale.getpreferredencoding() .

解决此问题的最简单方法是告诉 Python 使用兼容的编码打开文件。例如UTF-8(因为你的字符是unicode编码的):

text_file = open("test_file.txt", "w")
# Becomes
text_file = open("test_file.txt", "w", encoding='utf_8')

你应该完成了。

关于Python-3x Unicode 打印与写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38680361/

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