我从UTF-8编码的文件中读取测验的问题和答案,但答案可以包含相同文本中的1个字节符号(英语)和2个字节符号(俄语):
"best car тайота"`
我需要将答案替换为"*"
,因此看起来像"**** *** ******"
来帮助猜出答案是什么。为了确定长度我使用
len(answer.decode('utf-8'))
但是在下一个提示中,当我想显示某些符号(如"b*s* ca* *а*от*"
)时,我可以通过answer[index]
访问1字节符号,但我无法读取这样就是2个字节的符号,这就是为什么我得到没有2个字节符号的"b*s* ca*"
。
有解决方案吗?
答案 0 :(得分:3)
将字符串解码为Unicode值一次,并在其中进行替换。
unicode
字符串对象支持与字节字符串相同的操作;在混合字节字符串和Unicode字符串时要小心,因为这可能会触发自动编码或解码(导致UnicodeEncode
或UnicodeDecode
错误)。打印字符串应自动对值进行编码以匹配您的终端编解码器。
您可能想要阅读Python和Unicode: