【问题标题】:Polish encoding - issue with split波兰语编码 - 拆分问题
【发布时间】:2017-04-22 13:44:09
【问题描述】:

我有一个用 utf-8 编码的文件,带有波兰语字符。 我需要做的是玩一些文字。但是当我使用 split(" ") 列表包含 \xc5\x82 或 \u0142

filename = 'patient.txt'
f = open(filename, 'r')
for line in f:
    print line
    print line.split(" ")
    print unicode(line,encoding(line),errors='ignore').split(" ")
f.close()

结果:

   Pacjent lat 48 został przyjęty do Oddziału z powodu spadku tolerancji wysiłku i duszności.
['\xef\xbb\xbfPacjent', 'lat', '48', 'zosta\xc5\x82', 'przyj\xc4\x99ty', 'do', 'Oddzia\xc5\x82u', 'z', 'powodu', 'spadku', 'tolerancji', 'wysi\xc5\x82ku', 'i', 'duszno\xc5\x9bci.']
[u'Pacjent', u'lat', u'48', u'zosta\u0142', u'przyj\u0119ty', u'do', u'Oddzia\u0142u', u'z', u'powodu', u'spadku', u'tolerancji', u'wysi\u0142ku', u'i', u'duszno\u015bci.']

我需要做什么才能在列表中包含波兰语字符?有可能吗?

问候
帕维尔

【问题讨论】:

  • ł,在 utf8 中:十六进制 C582;在 Unicode 中:\u0142

标签: python character-encoding


【解决方案1】:

列表中已经有波兰语字符。但是,当您打印列表时,您只会看到它的表示。

>>> print u'zosta\u0142'
został

【讨论】:

    【解决方案2】:

    您的文件实际上不是 UTF-8,而是 UTF-8-BOM。使用open(filename, 'r', encoding='utf-8-bom')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 2016-01-27
      • 2011-03-31
      相关资源
      最近更新 更多