python打印只有一个字符串_python-3.x – 如何在Python3中打印()一个字符串,没有例外?...

看似简单的问题:如何在

Python3中打印()字符串?应该是一个简单的:

print(my_string)

但这不起作用.根据my_string的内容,环境变量和您使用的操作系统将引发UnicodeEncodeError异常:

>>> print("\u3423")

Traceback (most recent call last):

File "", line 1, in

UnicodeEncodeError: 'ascii' codec can't encode character '\u3423' in position 0: ordinal not in range(128)

是否有一种干净的便携方式来解决这个问题?

扩展一点:这里的问题是Python3字符串包含Unicode编码字符,而终端可以有任何编码.如果你很幸运,你的终端可以处理字符串中包含的所有字符,一切都会好的,如果你的终端不能(例如有人设置LANG = C),那么你得到一个例外.

如果在Python3中手动编码字符串,则可以提供忽略或替换不可编码字符的错误处理程序:

"\u3423".encode("ascii", errors="replace")

对于print()我没有看到插入错误处理程序的简单方法,即使有,一个简单的错误处理程序似乎是一个可怕的想法,因为它会修改数据.一个条件错误处理程序可能会工作(即检查isatty()并根据该做什么来决定),但是看起来非常麻烦只是为了打印()一个字符串,我甚至不确定它会不会在某些情况下失败.

一个现实世界的例子,这个问题就是这个例子:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值