Skip to main content
 首页 » 编程设计

python之在 Python 中将 unicode 字符串压缩在一起

2025年05月04日13duanxz

我有字符串:

a = "ÀÁÂÃÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜ" b = "àáâãäèéçêëìíîïòóôõöùúûüÿ" 

我想创建字符串

"ÀàÁáÂâ..." 

即将字符串分成两半,然后将两半压缩在一起。

我尝试了天真的 zip(a, b) 但这没有用。我认为这是由于 unicode 的问题。

有谁知道我怎样才能得到我想要的结果?

请您参考如下方法:

在 Python 2.x 中,默认情况下字符串不是 unicode。在处理 unicode 数据时,您必须执行以下操作:

  • 使用 u 字符作为前缀字符串文字:a = u'ÀÁÂÃÈÉÊÈÌÍÏÒÓÔÕÖÙÚÛÜ',或

  • 如果您想避免 u 前缀并且您使用的模块足够兼容,使用 from __future__ import unicode_literals import 使字符串文字默认解释为 unicode

  • 如果您直接在 Python 代码中编写 unicode 字符串文字,请以 utf-8 格式保存您的 .py 文件,以便正确解释文字。 Python 2.3+ 将解释 utf-8 BOM ;一个好的做法也是add a specific comment line在文件开头指示编码,如 # -*- coding: utf-8 -*-,或

  • 您还可以继续将 .py 文件保存为 ascii,但您需要转义文字中的 unicode 字符,这会降低可读性: 'ÀÁÂÃ' 应该变成 '\xc0\xc1\xc2\xc3'

一旦满足这些条件,剩下的就是在这些 un​​icode 字符串上应用算法,就像使用 str 版本一样。以下是针对 __future__ 导入问题的一种可能解决方案:

from __future__ import unicode_literals 
 
from itertools import chain 
a = "ÀÁÂÃÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜ" 
b = "àáâãäèéçêëìíîïòóôõöùúûüÿ" 
 
print ''.join(chain(*zip(a,b))) 
 
>>> ÀàÁáÂâÃãÈäÉèÊéËçÌêÍëÎìÏíÒîÓïÔòÕóÖôÙõÚöÛùÜú 

进一步引用:

  • PEP 263定义非ascii编码注释
  • PEP 3120将 utf-8 定义为 Python 3 中的默认编码