繁体   English   中英

Python正则表达式字符串提取

[英]Python Regex String Extraction

我正在尝试使用正则表达式从此字符串中提取两个字符串-

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

我想要src之后的URL和alt之后的文本(所以有机化学I(作为第二语言)和url)

我已经尝试过('<img src=(\\w+)" width')('<img src="(\\w+)"')('src="(\\w+)"\\swidth') url都返回空。

我也尝试过使用('alt="(\\w+)"')作为名字,但再次没有运气。

有人可以帮忙吗?

使用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)

尽管您不应该使用正则表达式解析HTML ,但我可以在这里指出正则表达式的常见错误,即您使用\\w 仅匹配AZ,az,0-9和下划线。 不斜杠,也不括号。 如果您尝试从属性中提取数据,请使用"([^"]*)""(.*?)"

您可以尝试r'<img[^>]*\\ssrc="(.*?)"'r'<img[^>]*\\salt="(.*?)"'

我不知道您是否正在处理HTML。 [^>]*是为了确保在方括号内。 \\s用于避免使用某些标签,例如“ xxxsrc”,并注意换行符。

我不懂python,但是这个正则表达式有帮助吗?

<img.*?src="([^"]*)".*?alt="([^"]*)".*?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM