Python-3x Unicode打印与写入

Python-3x Unicode打印与写入,python,unicode,Python,Unicode,我创建了以下程序,试图解决我认为是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()

我创建了以下程序,试图解决我认为是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()
当程序运行时,print语句提供以下输出:

变量s包含:7/02/16;07:30:00;圣保罗-8;可达性:18.5%
变量的类型为:
当需要写入文件时,我遇到以下错误:

回溯(最近一次呼叫最后一次):
文件“/Users/tglund/Projects/Python/thounandyes/unicode.py”,第6行,在
文本文件。写入
UnicodeEncodeError:“ascii”编解码器无法对位置18中的字符“\xe3”进行编码:序号不在范围内(128)
我从头到尾阅读了unicode文档

但是没有成功破解代码

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

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


非常感谢您在如何解决此问题方面提供的任何帮助。

即使在具有不同默认值的系统上,您的错误也可以通过以下方式重现:

text_file = open("test_file.txt", "w", encoding='ascii')
text_file.write('\xe3')
问题是您的默认文本编码是ascii。或者至少Python是这么理解的。请参见和下的“编码”

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

你应该完成

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