Python Regex String Extraction - PullRequest
       0

Python Regex String Extraction

1 голос
/ 12 сентября 2011

Я пытаюсь извлечь две строки из этой строки, используя регулярные выражения -

'<img src="http://images.efollett.com/books/978/047/012/9780470129296.gif" width="80" height="100" alt="Organic Chemistry I (as Second Language)" />'

Я хочу URL после src и текст после alt (таким образом, Organic Chemistry I (как второй язык)) и URL)

Я пробовал ('<img src=(\w+)" width'), ('<img src="(\w+)"') и ('src="(\w+)"\swidth'), для URL и все возвращаются пустыми.

Я также попробовал ('alt="(\w+)"') для имени и снова, не повезло.

Кто-нибудь может помочь?

Ответы [ 4 ]

3 голосов
/ 12 сентября 2011

Использование lxml.

import lxml.html

html_string = '<img src="http://images.efollett.com/books/978/047/012/9780470129296.gif" width="80" height="100" alt="Organic Chemistry I (as Second Language)" />'

img = lxml.html.fromstring(html_string)

print "src:", img.get("src")
print "alt:", img.get("alt")

Дает :

src: http://images.efollett.com/books/978/047/012/9780470129296.gif
alt: Organic Chemistry I (as Second Language)
2 голосов
/ 12 сентября 2011

Несмотря на то, что не следует разбирать HTML с помощью регулярных выражений , я могу указать на распространенную ошибку с регулярными выражениями, в которой вы используете \w.Это соответствует только AZ, az, 0-9 и подчеркиванию.Не косые черты, не круглые скобки.Если вы пытаетесь извлечь данные из атрибутов, используйте "([^"]*)" или "(.*?)"

1 голос
/ 12 сентября 2011

Можно попробовать r'<img[^>]*\ssrc="(.*?)"' и r'<img[^>]*\salt="(.*?)"'.

Я не знаю, имеете ли вы дело с HTML. [^>]* для обеспечения внутренних скобок. \s используется, чтобы избежать некоторых тегов, таких как "xxxsrc", и позаботиться о новых строках.

0 голосов
/ 12 сентября 2011

Я не знаю Python, но может ли помочь это регулярное выражение?

<img.*?src="([^"]*)".*?alt="([^"]*)".*?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...