字符串拆分包含python 2.7中的Umlautä

时间:2016-01-29 09:22:05

标签: python python-2.7 unicode

我正在尝试拆分包含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语句填充,第二个列表值用硬编码值。

2 个答案:

答案 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)

  1. 使用unicode类型来处理文本而不是字节串(Python 2上的str)。使用u'' unicode文字或在模块顶部添加from __future__ import unicode_literals
  2. 不要混淆对象及其文本表示(repr())。 打印Python列表会在其项目上调用repr()。要显示不可打印的ascii字符(在Python 2上),请自行格式化列表,例如:

    print ":".join(some_list)
    
  3. 不相关:如果你的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: