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

How to acces string with mixed 1 byte and 2 byte symbols?

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

"best car тайота"`

我需要用 "*" 替换答案,这样看起来 "**** *** ******" 可以帮助猜出答案是什么。为了确定长度,我使用

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

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

有解决办法吗?

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

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

您可能需要阅读 Python 和 Unicode: