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

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

本文详解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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。