我有一个值为 +91 1244567 的文字,我想在124之后添加一个空格,因此预期结果将变为: +91 124 4567
注意:输入可以是给定格式的任何数字。
我想在python 3.6中使用正则表达式执行此操作
提前感谢!
答案 0 :(得分:1)
>>> import re
>>> print(re.sub(r"(\d{3})", r"\1 ", "+91 1244567", count=1))
+91 124 4567
>>>
这仅替换第一个(count=1
)三位数字(\1
,对第一个捕获组的反向引用)加上一个空格。
答案 1 :(得分:0)
利用这些正则表达式技巧
\d
位数?
可选使用正则表达式:
(\+\d{2})\s?(\d{3})\s?(\d{4})
(\+\d{2})
:第一个组找到一个以+
字符开头,后跟2位数的子字符串。
\s?
:第一组和第二组之间的可选空格
(\d{3})
:第二组查找包含3位数的子字符串。
\s?
:第二组和第三组之间的可选空格
(\d{4})
:第3组找到包含4位数的子字符串。
代码:
>>> import re
>>> pattern = re.compile("(\+\d{2})\s?(\d{3})\s?(\d{4})")
>>> num = "+91 1244567"
>>> pattern.search(num).group(1)
'+91'
>>> pattern.search(num).group(2)
'124'
>>> pattern.search(num).group(3)
'4567'
利用re.sub
强制你的正则表达式中的可选空格成为complusory空格:
>>> re.sub(pattern, r'\1 \2 \3', num)
'+91 124 4567'