Андрей Светловxml разбирать через регулярки действительно странно. Но некоторые html страницы, ИМХО, никак не тянут на “структурированный текст”.
Просмотр кода показал, что разбор XML делается через регулярки. Которые - кривоватые.
…
Мораль: если работаете со структурированным текстом - используйте библиотеки, предназначенные для обрабатываемого формата.
Иначе довольно легко можно поймать неожиданное. Чем больше у вашей поделки пользователей - тем выше шанс споткнуться.
data = '<html><title>{?TITLE?}</title><body>{?TITLE?}</body></html>'
title = '{?TITLE?}'
def findall(string, substring):
length = len(substring)
result = []
temp = start = 0
while True:
temp = data.find(title, start)
if temp == -1: break
result.append(temp)
start = temp length
return result
print findall(data, title)
Virtuos86Полного ответа не было, но я уже делаю через find… За приведенный код огромное спасибо!!! Так как только изучаю python.
Мне показалось, или полный ответ так и не был приведен?При простом поиске подстроки find не будет сильно уступать регулярке в скорости.data = '<html><title>{?TITLE?}</title><body>{?TITLE?}</body></html>'
title = '{?TITLE?}'
def findall(string, substring):
length = len(substring)
result = []
temp = start = 0
while True:
temp = data.find(title, start)
if temp == -1: break
result.append(temp)
start = temp length
return result
print findall(data, title)
>>> data = '<html><Title>{?TITLE?}</title><body>{?TITLE?}</body></html>'
>>> re.findall(r'<Title>(.*?)</title>',data,re.I)
['{?TITLE?}']
r1 = re.compile(r'<p>(.*?)</p>', re.DOTALL).findall(http)