Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式帮助_Python_Html_Regex - Fatal编程技术网

Python正则表达式帮助

Python正则表达式帮助,python,html,regex,Python,Html,Regex,我正在尝试对HTML标记进行排序,但似乎无法正确地进行排序 到目前为止我做了什么 import urllib import re s = raw_input('Enter URL: ') f = urllib.urlopen(s) s = f.read() f.close r = re.compile('<TAG\b[^>]*>(.*?)</TAG>',) result = re.findall(r, s) print(result) 导入urllib 进

我正在尝试对HTML标记进行排序,但似乎无法正确地进行排序

到目前为止我做了什么

import urllib
import re

s = raw_input('Enter URL: ')
f = urllib.urlopen(s) 
s = f.read() 
f.close 
r = re.compile('<TAG\b[^>]*>(.*?)</TAG>',)
result = re.findall(r, s)
print(result)
导入urllib
进口稀土
s=原始输入('输入URL:')
f=urllib.urlopen(s)
s=f.read()
f、 接近
r=re.compile(']*>(.*),)
结果=r.findall(r,s)
打印(结果)
我用我想看到的标签替换“标签”


提前感谢。

您真的应该尝试使用能够执行HTML即时解析的库。Beautiful Soup是我的最爱之一。

你真的应该尝试使用能够执行HTML即时解析的库。“靓汤”是我的最爱之一。

我不太清楚你想用正则表达式实现什么。例如,捕获两个div标记之间的内容可以与

re.compile("<div.*?>.*?</div>")
重新编译(“.*”)
尽管在使用上述函数时,嵌套div会遇到一些问题。

我并不完全清楚使用正则表达式要实现什么。例如,捕获两个div标记之间的内容可以与

re.compile("<div.*?>.*?</div>")
重新编译(“.*”)
尽管使用上面的嵌套div会遇到一些问题。

BS的一个例子是

from BeautifulSoup import BeautifulSoup
doc = ['<html><head><title>Page title</title></head>',
       '<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
       '<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
       '</html>']
soup = BeautifulSoup(''.join(doc))
soup.findAll('b')
[<b>one</b>, <b>two</b>]
从美化组导入美化组
doc=[“页面标题”,
“

这是第一段。”, “

这是第二段。”, ''] 汤=美丽的汤(''.join(doc)) 汤。芬德尔('b') [一,二]

对于正则表达式,可以使用

aa = doc[0]
aa
'<html><head><title>Page title</title></head>'
pt = re.compile('(?<=<title>).*?(?=</title>)')
re.findall(pt,aa)
['Page title']
aa=doc[0]
aa
“页面标题”

pt=re.compile(')(?来自BS的一个例子是

from BeautifulSoup import BeautifulSoup
doc = ['<html><head><title>Page title</title></head>',
       '<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
       '<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
       '</html>']
soup = BeautifulSoup(''.join(doc))
soup.findAll('b')
[<b>one</b>, <b>two</b>]
从美化组导入美化组
doc=[“页面标题”,
“

这是第一段。”, “

这是第二段。”, ''] 汤=美丽的汤(''.join(doc)) 汤。芬德尔('b') [一,二]

对于正则表达式,可以使用

aa = doc[0]
aa
'<html><head><title>Page title</title></head>'
pt = re.compile('(?<=<title>).*?(?=</title>)')
re.findall(pt,aa)
['Page title']
aa=doc[0]
aa
“页面标题”

pt=re.compile('(?BeautifulSoup非常适合这一点。这是一次正则表达式学习体验,也是我唯一能想到的真实例子。例如,如果dog.avicat.avipig.jpg在那里,我可以把它归类为dog.avi cat.avi pig.jpgBeautifulSoup非常适合这一点。这是一次正则表达式学习体验,也是我唯一能想到的真实例子。也就是说,如果dog.avicat.avipig.jpg在那里,我可以把它分类为dog.avi cat.avi pig.jpgUse一个解析HTML的XML解析器。强制链接:不要用正则表达式解析HTML。正则表达式是解析HTML的一个不够复杂的工具。如果有人要求你这样做,用棍子打他们的头,然后用BeautifulSoup代替。它会很简单对你们两人来说都不那么痛苦。你们目前得到了什么样的结果?如果从web扫描html,使用xml解析器不是一个好主意。有些html页面离xml兼容文件很远。使用xml解析器解析html。强制链接:不要用正则表达式解析html。正则表达式解析html的工具不够复杂。如果有人要你这么做,用棍子打他们的头,然后用BeautifulSoup代替。这对你们两个来说都不会那么痛苦。你目前得到的结果是什么?如果你从web扫描html,使用xml解析器不是一个好主意。有些html页面离xml兼容文件很远。我想你放弃了捕获组周围的括号。你的意思是:re.compile((*))?他在代码中没有使用捕获组,所以我认为它不需要。我相信一个有能力的程序员可以在需要时添加它。我想你忘记了捕获组周围的括号。你的意思是:re.compile((*))?他没有在代码中使用捕获组,所以我认为不需要它。我相信一个有能力的程序员可以在需要时添加它。