使用公共分隔符将一行文本划分为元素

时间:2014-08-27 22:35:17

标签: parsing python-2.7

我有一个播放列表文本文件。我试图提取艺术家及其歌曲的列表。有39个订单项,它们显示为:

拉什 - 红色部门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

看来分隔符未被识别。如果我评论出来&#34; song = elements [1]&#34;和印刷艺术家,我得到了完整的文本,分隔符和所有。我已经看到了类似的问题,但是我无法从他们的解决方案中获得足够的洞察力来完成这项工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是由于划界字符&#39; - &#39;你认为它&#34; - &#34;但它实际上是一个看起来像连字符的不同角色。这个字符不在ASCII表中,所以我们必须告诉python我们将使用utf-8,它几乎覆盖了我们可能正在使用的所有字符。

#-*- coding: utf-8 -*-

x = open(u'songs.txt')
delimiter = '–' 

for line in x:
line = line.strip()
elements = line.split(delimiter)
artist = elements[0]
song = elements[1]
print "{artist} {song}".format(artist=artist,song=song)

我以前的答案没有解决问题的根源,但这对我来说也是一次很好的学习经历。