我想在03.00.00.00.00
转换此表格的电话号码+33.300000000+33是指示它可以是2或3位数字。
之后的数字。是电话号码。它可以是9或10位数字。
我试着这样:
p = re.compile( "\+[0-9]+\.([0-9]+)", re.VERBOSE)
number = "+33.300000000"
p.sub("0\1", number)
但这不起作用。
然而,搜索接缝起作用:
>>> p.search(number).groups()
('300000000',)
之后如何在Python中修改03.00.00.00.00的0300000000?
感谢您的帮助,
Natim
答案 0 :(得分:3)
最简单的方法是RE和纯字符串操作的混合,例如:
import re
def doitall(number):
# get 9 or 10 digits, or None:
mo = re.search(r'\d{9,10}', number)
if mo is None: return None
# add a leading 0 if they were just 9
digits = ('0' + mo.group())[-10:]
# now put a dot after each 2 digits
# and discard the resulting trailing dot
return re.sub(r'(\d\d)', r'\1.', digits)[:-1]
number = "+33.300000000"
print doitall(number)
根据需要发出03.00.00.00.00
。
是的,你可以在RE中完成所有操作,但这不值得头疼 - 混合工作正常; - )。
答案 1 :(得分:0)
在终端中它的工作原理如下:
p = re.compile( "\+[0-9]+\.([0-9]+)", re.VERBOSE)
number = "+33.300000000"
p.sub("0\\1", number)
在python脚本中它的工作原理如下:
p = re.compile( "\+[0-9]+\.([0-9]+)", re.VERBOSE)
number = "+33.300000000"
p.sub("0\1", number)