【发布时间】:2014-02-17 16:02:15
【问题描述】:
places = []
persons = []
unknown = []
newlist = []
filename = 'file.html'
tree = etree.parse(filename)
input_file = open(filename, 'rU')
def extract(tree):
<some code>
return places
return persons
return unknown
def change_class():
extract(tree)
for line in input_file:
for x in places:
for z in unknown:
if x+'</dfn>' in line:
newline = line.replace('"person"', '"place"')
newlist.append(newline)
elif z+'</dfn>' in line:
newline = line.replace('"person"','"undefined"')
newlist.append(newline)
else:
newlist.append(line)
break
break
for x in newlist:
print x
我有一个带有错误类值的此类 html 文件:
<html> <head></head> <body> <p class ='person'><dfn>New-York</dfn> <p class = 'place'><dfn>John Doe</dfn> <p class ='person'><dfn>Paris</dfn> <p class = 'place'><dfn>Jane Doe</dfn> </body> </html>
我的脚本允许我重新打印同一个文件,但它只替换两个列表(地点和未知)的第一项的类值:
<html> <head></head> <body> <p class ='place'><dfn>New-York</dfn> <p class = 'unknown'><dfn>John Doe</dfn> <p class ='person'><dfn>Paris</dfn> <p class = 'place'><dfn>Jane Doe</dfn> </body> </html>然后它有点停止迭代两个列表并直接进入 else 步骤并将所有其余部分添加到新列表中而无需替换。 Python 没有报错,使用 extract() 函数也成功提取了列表,我检查了...
【问题讨论】:
-
为什么不用正则表达式?
-
好吧,你在没有任何条件的情况下打破了两个内部循环。那么为什么你会期望不止一个循环呢?
-
我应该在哪里使用它们?
-
完全不要使用它们
-
如果没有两个中断,它将进入无限循环
标签: python list loops iteration