1

在过去的几个小时里,我一直在用俄语制表符分隔的 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 这可能意味着 split("\") 不起作用?

我正在使用 Python3.3 和 mac。

最后,我认为 Mac 上的命令行不显示西里尔字符不是问题——它之前已经做到了,没有问题(西方 Windows 版本似乎在这方面失败了)。

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

谢谢!

4

1 回答 1

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
автостраховка
страховкаавто
страховка автомобиля

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

于 2013-05-22T23:54:30.440 回答