谢谢!我使用@ nu11p01n73R的答案来自post,我主要得到的是URL,但仍有一些额外的&#34;噪音&#34;在开始和结束。我理想情况下只需要打印网址http://something.some - 所以正则表达式会删除网址开头的<a herf="
并删除结尾处的" data-metrics='{"action" : "Click Story 2"}'>
。我尝试修改表达式来实现这一点,但是我遇到了URL开始和结束时出现问题的问题。 - 我认为这搞砸了我的正则表达式。有什么建议吗?
在.txt文件中嵌入了这样的URL:
<a href="http://www.npr.org/blogs/parallels/2014/11/11/363018388/how-the-islamic-state-wages-its-propaganda-war" data-metrics='{"action":"Click Story 1"}' >
我喜欢输出:
http://www.npr.org/blogs/parallels/2014/11/11/363018388/how-the-islamic-state-wages-its-propaganda-war
我使用的最新代码是:
file = open("/Users/shannonmcgregor/Desktop/npr.txt", 'r')
for line in file:
if re.search('<a href=[^>]*(islamic|praying|marines|comets|dyslexics)', line):
print line
但是这会返回,例如:
<a href="http://www.npr.org/blogs/parallels/2014/11/11/363018388/how-the-islamic-state-wages-its-propaganda-war" data-metrics='{"action":"Click Story 1"}' >
答案 0 :(得分:1)
正则表达式不是解析html文件的正确工具。因为你打算,我发布这个解决方案。
>>> import re
>>> file = open("/Users/shannonmcgregor/Desktop/npr.txt", 'r')
>>> for i in file:
if re.search('<a href="[^>"]*(islamic|praying|marines|comets|dyslexics)', i):
i = re.sub(r'^.*?<a href="([^"]*)".*', r'\1', i)
print(i)
或强>
>>> for i in file:
if re.search('<a href="[^>"]*(islamic|praying|marines|comets|dyslexics)', i):
print(re.search(r'^.*?<a href="([^"]*)".*', i).group(1))
答案 1 :(得分:0)
您可以使用re.findall
功能将内容提取为
file = open("/Users/shannonmcgregor/Desktop/npr.txt", 'r')
for line in file:
if re.search('<a href=[^>]*(islamic|praying|marines|comets|dyslexics)', line):
print re.findall(r'(?<=")[^"]*(?=")', line)[0]
将生成输出
http://www.npr.org/blogs/parallels/2014/11/11/363018388/how-the-islamic-state-wages-its-propaganda-war