我正在尝试拆分包含Umlautä(德语字符)的字符串,但在拆分后它是编码的变音字符。请看下面。
>>> k = 'A|B|C|AT|Dxbensäce|S|'
>>> re.split('\|\w+\|',k)
['A','C','Dxbens \ xc3 \ xa4ce','']
我需要得到如下输出:
['A','C','Dxbensäce','']
请建议。
我需要补充一点。
我需要将上面的字符串拆分并存储到列表中,并将这些值与其他列表值进行比较(将相同的值添加到第二个列表中)。
由于第一个列表值转换为unicode,因此比较失败
注意:这里我不打印值。我知道通过使用print我会获得正确的变音值。
第一个列表值用split语句填充,第二个列表值用硬编码值。
答案 0 :(得分:1)
您的问题直接在于您处理字符串和编码,而不是拆分:
In [1]: k = 'A|B|C|AT|Dxbensäce|S|'
In [3]: k
Out[3]: 'A|B|C|AT|Dxbens\xc3\xa4ce|S|'
In [9]: print(k)
A|B|C|AT|Dxbensäce|S|
答案 1 :(得分:0)
unicode
类型来处理文本而不是字节串(Python 2上的str
)。使用u''
unicode文字或在模块顶部添加from __future__ import unicode_literals
不要混淆对象及其文本表示(repr()
)。
打印Python列表会在其项目上调用repr()
。要显示不可打印的ascii字符(在Python 2上),请自行格式化列表,例如:
print ":".join(some_list)
不相关:如果你的Python源代码中有非ascii文字字符(例如u'ä'
),那么你应该确保你的编辑器/ IDE尊重编码声明(# -*- coding: utf-8 -*-
行在顶部并使用指定的字符编码来保存Python源文件。
这是一个完整的代码示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
L = ['A', 'C', 'Dxbensäce', '']
print(*L, sep=':')
A:C:Dxbensäce: