【发布时间】:2014-10-21 16:17:18
【问题描述】:
我有一个播放列表文本文件。我正在尝试提取艺术家及其歌曲的列表。有 39 个订单项,它们显示为:
Rush - 红区 A
布鲁斯旅行者 - 钩子
这是一个 unicode 文件。
我正在尝试使用“-”作为分隔符并在此处拆分行:
x = open(u'list.txt')
for line in x:
line = line.strip()
elements = line.split('-')
artist = elements[0]
song = elements[1]
我得到一个回溯:
Traceback (most recent call last):
File "playlist.py", line 34, in <module>
song = line[1]
IndexError: list index out of range
似乎无法识别分隔符。如果我注释掉“song = elements[1]”并打印艺术家,我会得到整行文本、分隔符和所有内容。我见过类似的问题,但我无法从他们的解决方案中获得足够的洞察力来完成这项工作。任何帮助将不胜感激。
【问题讨论】:
-
你确定你有正确的破折号吗?尝试从您正在阅读的文件中剪切并粘贴精确的符号。
-
我认为它没有看到破折号,而是破折号的一些表示,在 unicode 中:\xe2
-
使用您当前的示例,它可以工作
"Rush - Red Sector A".split("-")给我['Rush ', ' Red Sector A'],但是使用您在编辑问题之前拥有的字符串它不起作用"Jace Everett – Bad Things Yes – Owner Of A Lonely Heart".split("-")给我['Jace Everett \xe2\x80\x93 Bad Things Yes \xe2\x80\x93 Owner Of A Lonely Heart']。遵循@jonrsharpe 直接使用文件中的符号的想法 -
我也看到了。如果我复制并粘贴@jonrsharpe 的破折号,我会得到
File "playlist.py", line 30 SyntaxError: Non-ASCII character '\xe2' in file playlist.py on line 30, but no encoding declared
标签: parsing python-2.7