Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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正则表达式解析HTML_Python_Regex - Fatal编程技术网

用Python正则表达式解析HTML

用Python正则表达式解析HTML,python,regex,Python,Regex,我不熟悉使用Python正则表达式。我试图从HTML中提取一些数据,但不确定正确的语法是什么 我得到了以下数据,我想提取数据出生日期='1969年7月4日',家乡='新泽西州柯尔斯颈部',学院='1991年宾夕法尼亚州立大学',研究生='1996年弗吉尼亚州' data = <b>Birthdate:</b> July 4, 1969<br/><b>Hometown:</b> Colts Neck, N.J.<br/><

我不熟悉使用Python正则表达式。我试图从HTML中提取一些数据,但不确定正确的语法是什么

我得到了以下数据,我想提取数据出生日期='1969年7月4日',家乡='新泽西州柯尔斯颈部',学院='1991年宾夕法尼亚州立大学',研究生='1996年弗吉尼亚州'

data = <b>Birthdate:</b> July 4, 1969<br/><b>Hometown:</b> Colts Neck, N.J.<br/><b>College:</b> Penn State, 1991<br/><b>Post-graduate:</b> Virginia, 1996</td></tr></table>
Birthdate = re.findall(r'<b>Birthdate:</b>(.*)<br/>', data)
Hometown = re.findall(r'<b>Hometown:></b>(.*)<br/>', data)
College = re.findall(r'<b>College:</b>(.*)<br/>, data)
Post-graduate = re.findall(r,<b>Post-graduate:</b>(.*)<td/>, data)
data=出生日期:1969年7月4日
家乡:新泽西州科尔茨内克
学院:宾夕法尼亚州立大学,1991年
研究生:弗吉尼亚州,1996年 Birthdate=re.findall(r'Birthdate:(.*)
,数据) 家乡=re.findall(r'homely:>(.*)
,数据) 学院=re.findall(r'College:(.*)
,数据) 研究生=r.findall(r,研究生:(*),数据)
诚然,我在这里没有正确地使用re.findall或通配符
(.*)
,因为我得到了一个返回的字符串,该字符串从我想要的值开始,到最后一个
标记的数据末尾。我想使用一个函数在我定义的模式之间提取数据
<代码>(.*)< /代码>在这个例子中。

如果您想使用<代码>正则表达式> /代码>,那么您可以考虑这一点,

>>> import re
>>> s = '''data = <b>Birthdate:</b> July 4, 1969<br/><b>Hometown:</b> Colts Neck, N.J.<br/><b>College:</b> Penn State, 1991<br/><b>Post-graduate:</b> Virginia, 1996</td></tr></table>'''
>>> dict(re.findall(r'<b>([^:]*):</b> *([^<]*)', s))
{'Hometown': 'Colts Neck, N.J.', 'Birthdate': 'July 4, 1969', 'College': 'Penn State, 1991', 'Post-graduate': 'Virginia, 1996'}
>>重新导入
>>>s=''数据=出生日期:1969年7月4日
家乡:新泽西州小马脖子
学院:宾夕法尼亚州立大学,1991年
研究生:弗吉尼亚州,1996年''
>>>dict(re.findall(r'([^:]*):*([^来吧,有很多HTML解析器。不要为此使用正则表达式。选择一个HTML解析器。正则表达式注定会被浏览器被迫使用的非标准HTML所破坏。另请参阅“tidy”,作为筛选器,如果您选择的语法分析器不起作用。感谢您的帮助。此re.findall和到字典的转换对于我需要做的工作非常有效。将来对这种类型的语法分析器使用哪些更好的库?将来使用BeautifulSoup语法分析器。