python for x in y循环不comp

2024-09-29 23:20:26 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试制作从播放列表中提取歌曲信息的脚本。你知道吗

这是我的播放列表的开头:

#EXTM3U
#EXTINF:402,Junior's Eyes - Black Sabbath
/Users/omitted/Black Sabbath/[1978] Never Say Die!/03. Junior's Eyes.mp3
#EXTINF:327,After Forever - Black Sabbath
/Users/omitted/Black Sabbath/[1971] Master of Reality/02. After Forever.mp3
#EXTINF:341,Killing Yourself to Live - Black Sabbath
/Users/omitted/Black Sabbath/[1973] Sabbath Bloody Sabbath/05. Killing Yourself to Live.mp3
#EXTINF:210,Rock 'n' Roll Doctor - Black Sabbath
/Users/omitted/Black Sabbath/[1976] Technical Ecstasy/06. Rock 'n' Roll Doctor.mp3

这是我写的剧本:

import re

f = open('Sabbath.m3u', 'r')
pTitle = re.compile('(?<=,)[A-Za-z0-9][A-Za-z0-9 \']+[A-Za-z0-9]')
pArtist = re.compile('(?<=- )[A-Za-z0-9][A-Za-z0-9 ]+[A-Za-z0-9]')

for str in f:
  title = pTitle.search(str)
  artist = pArtist.search(str)
  print artist.group() + ' - ' + title.group()

f.close()

运行脚本的结果是:

Black Sabbath - Junior's Eyes

就这样。为什么不在整个文件中循环?它显然到达了第2行,因为第1行在每个.m3u文件中都是“#EXTM3U”。你知道吗

请记住,我想知道为什么这不起作用,而不仅仅是替换代码。你知道吗


Tags: re脚本播放列表mp3usersblackeyesstr
1条回答
网友
1楼 · 发布于 2024-09-29 23:20:26

文件中有几行正则表达式不匹配。在这种情况下,Match对象是None,而None没有.group()属性,导致AttributeError被引发。您应该在控制台中看到该错误。你知道吗

你可以这样做

for line in f:
  t = pTitle.search(line)
  title = t.group() if t else "(N.A.)" 
  a = pArtist.search(line) 
  artist = a.group() if a else "(N.A.)" 
  print '{} - {}'.format(artist, title)

相关问题 更多 >

    热门问题