从 "Pseudo" HTML 中提取文本
Extracting Text from "Pseudo" HTML
我正在尝试将制造执行系统 (MES) SQL 数据库中的工单重建为 .pdf 格式,以便它们可以一起打印——而不是一次一个打印(一个时间是 MES 允许的唯一方式。
当涉及到包含链接等的工作说明时,我感到困惑(pseudo-html...不知道还能称呼它什么)。我 运行 SQL 查询所需的数据并将其放入 Pandas 数据框。以下是数据框中“文本”列(工作说明)的示例:
"DWG/TECH DATA: ALL TASK WITHIN THIS WORK ORDER ARE TO BE ACCOMPLISHED IAW:
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJECTID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: PANEL, |',@Caption=DWG 123456-123 ,REF_ID=REFID))""><#Tab>
MOA DWG:
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJECT ID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: FACEPLATES |',@Caption=DWG 98765 Plate,REF_ID=REFID))"">
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: ARTWORK |',@Caption=DWG 9999-8888 ARTWORK ,REF_ID=REFID))""><#Tab>"
我正在尝试 return 的数据应该如下所示:
DWG/TECH DATA: ALL TASK WITHIN THIS WORK ORDER ARE TO BE ACCOMPLISHED
IAW:
DWG 123456-123
MOA DWG:
DWG 98765 Plate
DWG 9999-8888 ARTWORK
那里的信息往往有很多复制粘贴插入其中;因此,对于我的正则表达式技能来说,寻找模式太难了。从本质上讲,我认为如果删除“<”和“>”之间的所有内容,就会发生这种情况——Except 如果它在“@Caption=”和“,”之间。
我也尝试用 beautifulsoup 提取文本,但标题从未出现。
如有任何建议或帮助,我们将不胜感激。
使用字符串操作(不是正则表达式),可以按照以下方式工作:
work = '''DWG/TECH DATA: ALL TASK WITHIN THIS WORK ORDER ARE TO BE ACCOMPLISHED IAW:
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJECTID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: PANEL, |',@Caption=DWG 123456-123 ,REF_ID=REFID))""><#Tab>
MOA DWG:
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJECT ID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: FACEPLATES |',@Caption=DWG 98765 Plate,REF_ID=REFID))"">
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: ARTWORK |',@Caption=DWG 9999-8888 ARTWORK ,REF_ID=REFID))""><#Tab>"
'''
work_dat = work.splitlines()
for line in work_dat:
line_lst = line.split('|')
step_1 = [item if "@Caption=" in item else line_lst for item in line_lst][0]
step_2 = [item if len(step_1)==1 else step_1[2] for item in step_1]
if len(step_2)>1:
print(step_2[1].split('=')[1].split(',')[0].strip())
else:
print(step_2[0])
输出:
DWG/TECH DATA: ALL TASK WITHIN THIS WORK ORDER ARE TO BE ACCOMPLISHED IAW:
DWG 123456-123
MOA DWG:
DWG 98765 Plate
DWG 9999-8888 ARTWORK
我正在尝试将制造执行系统 (MES) SQL 数据库中的工单重建为 .pdf 格式,以便它们可以一起打印——而不是一次一个打印(一个时间是 MES 允许的唯一方式。
当涉及到包含链接等的工作说明时,我感到困惑(pseudo-html...不知道还能称呼它什么)。我 运行 SQL 查询所需的数据并将其放入 Pandas 数据框。以下是数据框中“文本”列(工作说明)的示例:
"DWG/TECH DATA: ALL TASK WITHIN THIS WORK ORDER ARE TO BE ACCOMPLISHED IAW:
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJECTID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: PANEL, |',@Caption=DWG 123456-123 ,REF_ID=REFID))""><#Tab>
MOA DWG:
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJECT ID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: FACEPLATES |',@Caption=DWG 98765 Plate,REF_ID=REFID))"">
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: ARTWORK |',@Caption=DWG 9999-8888 ARTWORK ,REF_ID=REFID))""><#Tab>"
我正在尝试 return 的数据应该如下所示:
DWG/TECH DATA: ALL TASK WITHIN THIS WORK ORDER ARE TO BE ACCOMPLISHED IAW:
DWG 123456-123
MOA DWG:
DWG 98765 Plate
DWG 9999-8888 ARTWORK
那里的信息往往有很多复制粘贴插入其中;因此,对于我的正则表达式技能来说,寻找模式太难了。从本质上讲,我认为如果删除“<”和“>”之间的所有内容,就会发生这种情况——Except 如果它在“@Caption=”和“,”之间。
我也尝试用 beautifulsoup 提取文本,但标题从未出现。
如有任何建议或帮助,我们将不胜感激。
使用字符串操作(不是正则表达式),可以按照以下方式工作:
work = '''DWG/TECH DATA: ALL TASK WITHIN THIS WORK ORDER ARE TO BE ACCOMPLISHED IAW:
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJECTID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: PANEL, |',@Caption=DWG 123456-123 ,REF_ID=REFID))""><#Tab>
MOA DWG:
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJECT ID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: FACEPLATES |',@Caption=DWG 98765 Plate,REF_ID=REFID))"">
<#Tab><UT=""LinkInvoke(Slide(OBJECT_ID=OBJID,@GlyphName=@InlineText,@Classification=General,@RenderDescText=True,'@Desc=| Description: ARTWORK |',@Caption=DWG 9999-8888 ARTWORK ,REF_ID=REFID))""><#Tab>"
'''
work_dat = work.splitlines()
for line in work_dat:
line_lst = line.split('|')
step_1 = [item if "@Caption=" in item else line_lst for item in line_lst][0]
step_2 = [item if len(step_1)==1 else step_1[2] for item in step_1]
if len(step_2)>1:
print(step_2[1].split('=')[1].split(',')[0].strip())
else:
print(step_2[0])
输出:
DWG/TECH DATA: ALL TASK WITHIN THIS WORK ORDER ARE TO BE ACCOMPLISHED IAW:
DWG 123456-123
MOA DWG:
DWG 98765 Plate
DWG 9999-8888 ARTWORK