【发布时间】:2020-07-12 14:54:50
【问题描述】:
这里我试图在 pointID 和 point Name 之间提取内容。如下图所示。
import re
import pandas as pd
import numpy as np
sent1 = 'Date:2020/07/11 13:53 Low Alarm OFF\nAlarm Priority:Urgent\nPoint ID0000294.AI.0017707\nPoint Name:BOM-DC3-B2-2F-Q1-TEMP 3\nAlarm:Normal\nStatus:18.6 øC'
sent2 = 'Date:2020/07/11 13:42 Low AlarmAlarm Priority:UrgentPoint ID0000294.AI.0017707Point Name:BOM-DC3-B2-2F-Q1-TEMP 3Alarm:AbnormalStatus:Analog Lower Limit Alarm 18.0 øC'
def extract_id(sent):
lst=re.split(r'\W+', sent)
lst=str(lst[13]) + str(lst[14]) + str(lst[15])
return(lst)
在这里,第一个 sent1 我能够在 pointid 但 point Name 之间提取内容,但使用 sent2 我无法这样做。为什么,因为我将完整的句子拆分成一个列表,然后在 2015 年 13 月 14 日获取列表索引。这与sent2 不同。需要一个使用正则表达式的解决方案如何获取Point ID[Required content]Point Name之间的内容。
【问题讨论】:
-
您可以使用带有可选换行符的非捕获组
Point ID(\S.*?)[\r\n]*Point Name\bregex101.com/r/FS2HdC/1
标签: python-3.x regex string