Python - 处理Unicode(俄语)Txt文件

时间:2013-05-22 23:33:23

标签: python cyrillic

在过去的几个小时里,我一直在俄罗斯制表符分隔的txt文件中感到困惑。这是它的样子:

CODE    AD_GROUP    KEYWORD MATCH_TYPE

009966  Автостраховка   автостраховка   Broad
009965  Автостраховка   страховкаавто   Broad
009964  Автостраховка   страховка автомобиля    Broad

目标是解析txt文件,现在分别打印每个关键字。

到目前为止,我有:

f = open("struct.txt",encoding="UTF-8",errors='strict')

for line in f:
    vals = line.split("\t")
    print(vals[2])

f.close()

但我一直收到以下错误:

UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0xff:无效的起始字节

另外,如果我使用len(vals)来查看每个列表的长度,我会得到以下结果:4 1 4 1这可能意味着拆分(“\”)不起作用?

我使用的是Python3.3和mac。

最后,我不认为mac上的命令行没有显示西里尔字符是一个问题 - 它之前没有问题(西方Windows版本似乎失败了)。

请让我知道我做错了什么。

谢谢!

1 个答案:

答案 0 :(得分:2)

使用此代码(Python2.7)

f = open("struct.txt")

for line in f:
    vals = [item for item in line.strip().split("\t") if item != '']
    if len(vals):
        print(vals[2])

f.close()

你的来源(我编辑以确保它有标签)我得到以下输出:

> python so_16703270.py
KEYWORD
автостраховка
страховкаавто
страховка автомобиля

你确定文件中有标签而某些地方没有空格吗?