繁体   English   中英

Python重新字符串解析

[英]Python re string parsing

我正在尝试使用scrapy中的re模式来解析字符串。 该字符串的格式如下。 我正在尝试检索字体标签内的数字(例如08:00 )。 在一个列表(\\d+:\\d+)+做起来很容易,但是我需要两个单独的AMPM列表。 您只能通过创建两个子字符串( AMPM )然后针对每个子字符串运行模式来做到这一点吗? (AM -(PM -是唯一的。感觉您应该可以直接执行,但我没有主意。谢谢。

输入示例:

(AM – 07:00 <font color=#0002fe>08:00</font> <font color=#0000dd>09:00</font> <font color=#0001fe>10:100</font>) <br> (PM – 18:00 <font color=#0000fe>190:00</font> <font color=#0000fe>175:00</font>) 

我首先要消除HTML标记,然后使用纯文本。 为此,您可以使用HTML解析器,例如BeautifulSoup

>>> from bs4 import BeautifulSoup
>>> data = '(AM – 07:00 <font color=#0002fe>08:00</font> <font color=#0000dd>09:00</font> <font color=#0001fe>10:100</font>) <br> (PM – 18:00 <font color=#0000fe>190:00</font> <font color=#0000fe>175:00</font>)'
>>> soup = BeautifulSoup(data, "html.parser")
>>> data = soup.get_text()
>>> AM, PM = data.split("  ")
>>> AM
u'(AM \u2013 07:00 08:00 09:00 10:100)'
>>> PM
u'(PM \u2013 18:00 190:00 175:00)'

如果您的字符串始终像示例一样,则可以使用以下正则表达式进行操作:

import re
capture = re.compile("(?<=>)[\d:]*(?=<)")
res = capture.findall("(AM – 07:00 <font color=#0002fe>08:00</font> <font color=#0000dd>09:00</font> <font color=#0001fe>10:100</font>) <br> (PM – 18:00 <font color=#0000fe>190:00</font> <font color=#0000fe>175:00</font>)")
for match in res:
    print(match)

但是,如果其中还有其他类型的标签,则此方法将不起作用,因为它只会找到><之间的所有内容,且不带空格。

结果:

08:00
09:00
10:100
190:00
175:00

暂无
暂无

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

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