【发布时间】:2013-05-22 23:33:23
【问题描述】:
在过去的几个小时里,我一直在为俄罗斯制表符分隔的 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' codec can't decode byte 0xff in position 0: invalid start byte
另外,如果我执行 len(vals) 来查看每个列表的长度,我会得到以下信息:4 1 4 1 这可能意味着 split("\") 不起作用?
我正在使用 Python3.3 和 mac。
最后,我认为 mac 上的命令行不显示西里尔字符不是问题 - 它之前已经做到了没有问题(西方 Windows 版本似乎在这方面失败了)。
请让我知道我做错了什么。
谢谢!
【问题讨论】:
-
Unicode 错误仅与命令行中的打印有关。您可以在 IDLE 中执行您的脚本,它应该可以工作。然后,您可以在长度未按预期工作时获得正确的输出和调试。
-
您遇到了打印失败。您需要修复终端设置。见wiki.python.org/moin/PrintFails
-
感谢您的快速回复,但这似乎不是问题(如我的描述中所述)。我刚刚在 Mac 上的 IDLE 中运行它并得到:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
-
您如何看待带有字符的文件?你在用什么程序?也许文件是 UTF-16
-
嗨,马克,请参阅下面我对 sberry 的评论。部分工作了!