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-файл этого рода со значениями ошибочными класса:Looping останавливается после первого элемента в списке
<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>
Затем он прекращает итерацию по обоим спискам и переходит непосредственно к другому шагу и добавляет все остальное в новый список без замены. Python yelds без ошибок, список успешно извлечены с помощью функции экстракта(), а также, я проверил ...
Почему вы не используете регулярные выражения? –
хорошо, что вы выходите из обеих внутренних петель без каких-либо условий. Так почему вы ожидаете более одного цикла? – M4rtini
Где именно использовать их? – user3241376