Python重新字符串解析

Python重新字符串解析,python,string,parsing,Python,String,Parsing,我试图在scrapy中使用re模式来解析字符串。字符串的格式如下。我正在尝试检索字体标记中的数字(例如,08:00)。很容易在一个列表中完成(\d+:\d+),但我需要两个单独的AM和PM列表。您只能通过创建两个子字符串-AM和PM-然后针对每个子字符串运行模式来实现这一点吗?(AM-和(PM-是独一无二的。感觉你应该可以直接做,但我没有主意。谢谢 输入示例: (AM – 07:00 <font color=#0002fe>08:00</font> <font co

我试图在scrapy中使用re模式来解析字符串。字符串的格式如下。我正在尝试检索字体标记中的数字(例如,
08:00
)。很容易在一个列表中完成
(\d+:\d+)
,但我需要两个单独的
AM
PM
列表。您只能通过创建两个子字符串-
AM
PM
-然后针对每个子字符串运行模式来实现这一点吗?
(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>) 
(上午-07:00 08:00 09:00 10:100)
(下午-18:00 190:00 175:00)
我首先消除HTML标记并使用纯文本。为此,您可以使用HTML解析器,如:

>>来自bs4导入组
>>>数据='(上午–07:00 08:00 09:00 10:100)
(下午–18:00 190:00 175:00)' >>>soup=BeautifulSoup(数据,“html.parser”) >>>data=soup.get_text() >>>AM,PM=数据分割(“”) >>>上午 u'(AM\u2013 07:00 08:00 09:00 10:100) >>>首相 u'(下午\u2013 18:00 190:00 175:00)
我首先消除HTML标记并使用纯文本。为此,您可以使用HTML解析器,如:

>>来自bs4导入组
>>>数据='(上午–07:00 08:00 09:00 10:100)
(下午–18:00 190:00 175:00)' >>>soup=BeautifulSoup(数据,“html.parser”) >>>data=soup.get_text() >>>AM,PM=数据分割(“”) >>>上午 u'(AM\u2013 07:00 08:00 09:00 10:100) >>>首相 u'(下午\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)

如果字符串总是与示例类似,则可以使用以下正则表达式执行此操作:

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)

与其对整个输入调用
get_text()
,不如对

标记本身进行拆分?@dimo414这是一个很好的观点。我只是担心操作的问题过于复杂,所以决定只显示起点,以使数据对任务更方便。谢谢。与其调用
get_text(),不如
就整个输入而言,为什么不在

标记本身上拆分呢?@dimo414这是一个很好的观点。我只是担心操作的问题过于复杂,所以决定只显示起点,以使数据更方便完成任务。谢谢。谢谢你的回复。我担心我在原来的帖子中不够清楚。提供的字符串是一个示例,但它是包含许多其他标记的较大字符串的一部分。因此,按建议的方式拆分标记不是一个选项。关于BeautifulSoup,我没有使用它,因此我认为使用re将两个部分提取为子字符串并按指示解析它们可能更容易。再次感谢。t感谢您的回复。恐怕我在我的原始帖子中不够清楚。提供的字符串是一个示例,但它是包含许多其他标签的较大字符串的一部分。
标签,因此以建议的方式拆分标签不是一个选项。关于BeautifulSoup,我没有使用它,因此我认为对我来说,使用re-to-ext可能更容易将这两部分提取为子字符串,并按指示进行分析。再次感谢。
08:00
09:00
10:100
190:00
175:00