Python - 解码从输入文件中读取的文本

时间:2014-10-24 14:27:38

标签: python decode codec normalize

很抱歉,如果这已在其他地方得到解答,但我无法找到解决问题的方法。

我正在阅读带有服务参考文件的文件。来自卫星接收器的名字。我正在尝试规范化服务名称,但问题是该文件可能包含来自许多不同卫星和许多不同语言的数据。

我有这个代码处理了一些爱尔兰名字,将RTÉOne改为RTE One等。

name = unicodedata.normalize('NFKD', unicode(name, 'utf_8')).encode('ASCII', 'ignore')
从输入文件中读取

名称,如下所示:

RTÉ One

一切正常,但后来我遇到了这样的服务名称:

ΉπειÏος TV1

它无法处理上面的编解码器,显然不是utf_8?

我尝试将上面的代码更改为:

name = unicodedata.normalize('NFKD', force_decode(name)).encode('ASCII', 'ignore')

force_decode的功能如下:

def force_decode(string, codecs=['latin_1', 'cp857', 'cp866', 'cp1252', 'cp855', 'iso8859_5', 'iso8859_9', 'utf_8']):
for i in codecs:
    try:
        return string.decode(i)
    except (Exception) as exception:
        print "Error decoding name!! ", exception
        pass

print "cannot decode url %s" % ([string])

现在发生的事情是上面的内容仅仅是TV1。我想,如果我能够解码任何ΉÏμÎÎÎÎÏÏÏ,,,,,,,,

任何人都知道这是否可行?

提前致谢。

0 个答案:

没有答案