我正在尝试将a.b
类型的所有字符串更改为a. b
。如果任何字符都是大写字母,它也应该有效。请注意,a.
不应更改为a.\(space)
。
我尝试过使用正则表达式来执行此操作:
a = "a.b"
a = re.sub(r'[a-b]\.[a-b]', ' .', a)
输出应该是a. b
,但它是.
,因为它也会替换所有字符,而不是保留字符,只是在点后面放一个空格。
有人知道如何在Python中执行此操作吗?
编辑:我试图在两个句子之间有一段时间时添加一个空格。但是,我无法使用str.replace
,因为在这种情况下它也会添加空格,例如1.5
成为1. 5
,这不是我想要的。我试图做正则表达式,但无法让它工作。
此外,这必须适用于所有可能的句子,而不仅仅是a.b
答案 0 :(得分:1)
您可以使用以下([abAB])\.([abAB])
>>> import re
>>> s = ['a.b', 'A.b', 'a.B', 'A.B']
>>> [re.sub(r'([abAB])\.([abAB])', r'\1. \2', i) for i in s]
['a. b', 'A. b', 'a. B', 'A. B']
您的方法存在的问题是您没有保存要在替换结果中使用的捕获组。
如果您希望这适用于整个字母表,您可以使用:
>>> s = 'billy.bob'
>>> re.sub(r'([a-zA-Z])\.([a-zA-Z])', r'\1. \2', s)
'billy. bob'