python for x in y循环未完成
正在尝试制作从播放列表中提取歌曲信息的脚本 这是我的播放列表的开头:python for x in y循环未完成,python,for-loop,Python,For Loop,正在尝试制作从播放列表中提取歌曲信息的脚本 这是我的播放列表的开头: #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 Real
#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()
重新导入
f=开放('Sabbath.m3u','r')
pTitle=re.compile(“(?文件中有几行正则表达式无法匹配。在这种情况下,匹配对象是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)
文件中有几行正则表达式无法匹配。在这种情况下,匹配对象是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)
我认为你的正则表达式是错误的,不能复制它,正则表达式找不到任何AttributeError:“NoneType”对象没有属性“group”这真的是你正在使用的代码吗?正如lapinkoira指出的,这段代码崩溃了。它甚至不应该打印任何东西,因为它在读取文件的第一行时崩溃了。一个正则表达式可以提取所有f一次过的ield可能会更健壮,也更容易编码。我在使用python的正则表达式时遇到了困难,我认为这是不必要的复杂。例如,在SQL中,我会使用regexp_替换(str,'$exterf:\d{3,4},([\w]+?)-([\w]+?)$,'\1'))
访问标题和“\2”作为提取乐队的第三个参数,但在python中找不到相同的选项。我认为您的正则表达式是错误的,无法复制它,正则表达式找不到任何AttributeError:“NoneType”对象没有属性“group”这真的是您正在使用的代码吗?正如lapinkoira指出的,这段代码崩溃了。它会崩溃我们甚至不打印任何内容,因为它在读取文件的第一行时崩溃。一次提取所有字段的单个正则表达式可能会更健壮,也更易于编码。我在使用python的正则表达式时遇到了困难,我认为这是不必要的复杂。例如,在SQL中,我会使用regexp_replace(str,$exef:\d{3,4},([\w]+?)-([\w]+?)$,“\1”)访问标题和“\2”作为提取乐队的第三个参数,但在python中找不到相同的选项。title=t.group()或“(N.A.)“
如果t
为None
,则仍然会失败。另一种方法是使用如果all([title,artist]):
在尝试访问他们的.group()
方法之前。这也返回了与上面相同的输出。我将python作为shell命令运行pythonscript2.py
title=t.group()或“(N.a.)“如果t
为None
,则仍然会失败。另一种方法是使用如果所有([标题,艺术家]:
在尝试访问他们的.group()
方法之前。这也将返回与上面相同的输出。我将python作为shell命令运行python script2.py