Форум сайта python.su
Zubchick, <title> можно писать любым регистром - и это допускается.
Офлайн
Андрей Светлов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?}']
Офлайн
Люди добрые!!!! помогите!!! спасите жизнь человека!!! вешаюсь! Ситуация очень похожая, но…. у меня страница имеет такой вид:
<html>
<title>
title
</title>
<body>
body
</body>
<p>
test
</p>
</html>
как мне найти test? я перепробовал сто вариантов… но ничего не выходит… вот на чем я остановился…
http = Get('http://moovie.ru/film/the_tourist')
r1 = re.compile(r'<p>(.*?)</p>').findall(http)
for rCLS in r1:
print rCLS
если бы все было в одну строчку, то нет проблем, а так он не хочет находить….. помогите!!!
Офлайн
r1 = re.compile(r'<p>(.*?)</p>', re.DOTALL).findall(http)
Отредактировано (Фев. 16, 2011 19:47:48)
Офлайн
И все же разгребать регулярками html - не комильфо
Офлайн
Спасибо огромное!!! а еще такой вопрос… ситуация как бы таже самая, но немного другая:
Люди добрые!!!! помогите!!! спасите жизнь человека!!! вешаюсь! Ситуация очень похожая, но…. у меня страница имеет такой вид:
<html>
<title>
title
</title>
<body>
body
</body>
<p>
test
</p>
Год: <b>2010</b><br/>
Жанр: <b>Боевик</b><br/>
</html>
как мне найти именно год?
http = Get('http://moovie.ru/film/the_tourist')
r1 = re.compile(r'Год: <b>(.*?)</b><br/>', re.DOTALL).findall(http)
for rCLS in r1:
print rCLS
Офлайн
Да вешайтесь уже, что ли…
Офлайн