【问题标题】:How to acces string with mixed 1 byte and 2 byte symbols?如何使用混合的 1 字节和 2 字节符号访问字符串?
【发布时间】:2015-04-04 14:06:56
【问题描述】:

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

"best car тайота"`

我需要用"*" 替换答案,所以它看起来像"**** *** ******" 来帮助猜测答案是什么。为了确定长度,我使用

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

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

有解决办法吗?

【问题讨论】:

    标签: python utf-8 cyrillic


    【解决方案1】:

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

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

    您可能想了解 Python 和 Unicode:

    【讨论】:

      猜你喜欢
      • 2013-03-14
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多