我有字符串:
a = "ÀÁÂÃÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜ" b = "àáâãäèéçêëìíîïòóôõöùúûüÿ"
我想创建字符串
"ÀàÁáÂâ..."
即将字符串分成两半,然后将两半压缩在一起。
我尝试了天真的 zip(a, b) 但这没有用。我认为这是由于 unicode 的问题。
有谁知道我怎样才能得到我想要的结果?
请您参考如下方法:
在 Python 2.x 中,默认情况下字符串不是 unicode。在处理 unicode 数据时,您必须执行以下操作:
使用
u字符作为前缀字符串文字:a = u'ÀÁÂÃÈÉÊÈÌÍÏÒÓÔÕÖÙÚÛÜ',或如果您想避免
u前缀并且您使用的模块足够兼容,使用from __future__ import unicode_literalsimport 使字符串文字默认解释为 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'
一旦满足这些条件,剩下的就是在这些 unicode 字符串上应用算法,就像使用 str 版本一样。以下是针对 __future__ 导入问题的一种可能解决方案:
from __future__ import unicode_literals
from itertools import chain
a = "ÀÁÂÃÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜ"
b = "àáâãäèéçêëìíîïòóôõöùúûüÿ"
print ''.join(chain(*zip(a,b)))
>>> ÀàÁáÂâÃãÈäÉèÊéËçÌêÍëÎìÏíÒîÓïÔòÕóÖôÙõÚöÛùÜú
进一步引用:
