如何访问混合1字节和2字节符号的字符串?

时间:2015-04-04 14:06:56

标签: python utf-8 cyrillic

我从UTF-8编码的文件中读取测验的问题和答案,但答案可以包含相同文本中的1个字节符号(英语)和2个字节符号(俄语):

"best car тайота"`

我需要将答案替换为"*",因此看起来像"**** *** ******"来帮助猜出答案是什么。为了确定长度我使用

len(answer.decode('utf-8'))

但是在下一个提示中,当我想显示某些符号(如"b*s* ca* *а*от*")时,我可以通过answer[index]访问1字节符号,但我无法读取这样就是2个字节的符号,这就是为什么我得到没有2个字节符号的"b*s* ca*"

有解决方案吗?

1 个答案:

答案 0 :(得分:3)

将字符串解码为Unicode值一次,并在其中进行替换。

unicode字符串对象支持与字节字符串相同的操作;在混合字节字符串和Unicode字符串时要小心,因为这可能会触发自动编码或解码(导致UnicodeEncodeUnicodeDecode错误)。打印字符串应自动对值进行编码以匹配您的终端编解码器。

您可能想要阅读Python和Unicode: