【发布时间】:2021-01-09 01:27:20
【问题描述】:
我想删除所有由单个字符分隔的点,我也想用空格替换所有由多个连续字符分隔的点(如果一侧有 len > 1字符)。
例如。给定一个字符串,
s = ' A.B.C.D.E. FGH.IJ K.L.M.NO PQ.R.S T.U.VWXYZ'
处理后的输出应如下所示:
'ABCDE FGH IJ KLM NO PQ RS TU VWXYZ'
- 请注意,在
A.B.C.D.E.的情况下,所有点都被删除(当没有尾随点时也是如此) - 请注意,在
K.L.M.NO的情况下,前两个点被删除,最后一个被替换为空格(因为 NO 不是单个字符) - 请注意,在
PQ.R.S的情况下,第一个点被替换为空格,第二个点被删除。
我几乎有一个可行的解决方案:
re.sub(r'(?<!\w)([A-Z])\.', r'\1', s)
但在给出的示例中,T.U.VWXYZ 被转换为 TUVWXYZ,而它应该是 TU VWXYZ
注意:使用单个正则表达式解决此问题不很重要,甚至根本就没有正则表达式。
编辑:在示例字符串中将PQ.RS 更改为PQ.R.S。
【问题讨论】:
-
您对非正则表达式解决方案满意吗?
-
是的,它不一定是正则表达式