【发布时间】:2021-04-17 15:47:12
【问题描述】:
我正在使用 Pandas 进行一些数据清理,并且我有一个很长的正则表达式,我想将其拆分为多行。以下在 Pandas 中可以正常工作,因为它们都在一行中:
df['REMARKS'] = df['REMARKS'].replace(to_replace =r'(?=[^\])}]*([\[({]|$))\b(?:GR|MDT|CMR|HLDS|NEXT|NGI|MDTS|RES|PPC|IND|FDC|CNL)\b(?:\s*(?:,\s*)?(?:(?:or|and)\s+)?(?:GR|MDT|CMR|HLDS|NEXT|NGI|MDTS|RES|PPC|IND|FDC|CNL))*\b', value = r'<\g<0>>', regex = True)
但是,很难管理。我尝试了以下适用于常规 Python 的详细方法:
df['REMARKS'] = df['REMARKS'].replace(to_replace =r"""(?=[^\])}]*([\[({]|$))
\b(?:GR|MDT|CMR|HLDS|NEXT|NGI|MDTS|RES|PPC|IND|FDC|CNL)
\b(?:\s*(?:,\s*)?(?:(?:or|and)\s+)?
(?:GR|MDT|CMR|HLDS|NEXT|NGI|MDTS|RES|PPC|IND|FDC|CNL))*\b""", value = r'<\g<0>>', regex = True)
不过,这在 Pandas 中不起作用。有什么我想念的想法吗?
这是一些用于测试的示例文本:
GR、MDT、CMR、HLDS、NEXT、NGI @ 25273、COMPTG
在 9-7/8 LNR、LWD[GR、RES、APWD、SONVIS]、MDTS(PRESS 和 SAMP)上适合 13.72 ROT SWC, TSTG BOP
LWD[GR,RES,APWD,SONVIS], GR, RES, NGI, PPC @ 31937, MDTS (PRESS & SAMP) TKG ROT SWC
LWD[GR,RES] @ 12586, IND, FDC, CNL, GR @ 12586, SWC, RAN CSG, PF 12240-12252,RR(添加信息)
谢谢!
【问题讨论】: