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