Python遍历含汉字字符串的正确方法:编码与Unicode处理

顾星河
顾星河
发布时间:2026-10-13 | 3人浏览过
原创

本文详解Python中遍历含汉字字符串时因编码不同导致的字符长度差异。分析UTF-8(3字节)与GBK(2字节)环境下直接遍历的问题,提供通过切片按字节读取的方法,并推荐将字符串转换为Unicode格式以实现统一字符遍历的最佳实践。

Python遍历含汉字字符串实例详解

s = "中国china"
for j in s:
  print j

首先需要确认变量 'a' 的编码格式,它可能并非你预期的 GBK 编码。

>>> a='中国'
>>> a

可以通过以下代码进行测试:如果输出结果为 6 个字符(word),说明编码为 UTF-8;若输出为 4 个字符,则说明编码为 GBK。

此外,无论是 UTF-8 还是 GBK 编码,直接遍历字符串均不可取,因为这种方式会逐个字符地提取。在虚拟机环境中,变量 a 被视为一个长度为 len(a) 的字符串对象。

接下来讨论具体的遍历策略。

Linux 系统的 Shell 默认编码通常为 UTF-8,因此一个中文字符占用三个字节。可以尝试每次读取三个字节,操作如下:

>>> a[:3]

执行后将输出单个“中”字。

Windows 命令行(command)的默认编码为 cp936(即 GBK),此时一个中文字符占用两个字节,因此需要每次读取两个字节(使用切片 a[:2])。

另一种遍历方式是将字符串转换为 Unicode 编码。这样无论中文还是英文,每个字符都视为一个单位,从而可以使用 for i in a 的方式正常遍历。这种方法的优势在于中英文字符在 Unicode 中均占一个字符单位,而在 UTF-8 和 GBK 编码中,英文字母仅占一个字节。

s = u"中国china"
for j in s:
  print j

转换后的输出结果如下:

中
国
c
h
i
n
a

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表