问题描述
我正在尝试在 Python 2.7 中打印一个字符串,但该字符串包含字符“(150\xb5s)”并且它无法打印 x5bs,因此它给出了该字符串位置的错误。
UnicodeEncodeError: "ascii" codec can't encode character u'\xb5'
string_print = "29 days in (F150\xb5s)"
with open("testing_file.txt","w") as fill:
fill.write(string_print)
我尝试从 stackoverflow 解决方案中执行此操作,但仍然出现相同的错误
string_print = "29 days in (F150\xb5s)"
with open("testing_file.txt","w") as fill:
fill.write(string_print.decode("utf-8"))
使用原始字符串方法有效,但问题是 string_print 可以包含任何字符串,因为我只是将一个很长的程序缩短以更好地隔离问题。那么有没有办法让变量 string_print 成为原始字符串的一部分。如果我只做“29 天 in (F150\xb5s)”的原始字符串,它就可以工作。
r"29 days in (F150\xb5s)"
但是 string_print 可以是任何类型的字符串
解决方法
我已经找到了解决此问题的方法。基本上我们可以使用repr(string_print)来解决这个问题。
string_print = "29 days in (F150\xb5s)"
with open("testing_file.txt","w") as fill:
fill.write(repr(string_print))