使用Python2.7,我想在字符串的最后两个数字之前添加一个破折号,只有在字符串都是数字的情况下。
例如:
1234567 变成 12345-78
12345 no无变化
12345PP678 无变化
ABCDEFGH 无变化
发布于 2015-08-18 16:59:41
您不需要一个正则表达式来查看一个字符串是否都是数字,您可以使用str.isdigit (如果它都是数字),切片并添加一个"-",如果不按原样离开:
s = "1234578"
s ="{}-{}".format(s[:-2],s[-2:]) if s.isdigit() else s
print(s)
12345-78它也比使用正则表达式更有效。
In [16]: s = "1234578" * 1000
In [17]: r= re.compile(r'^(\d*)(\d{2})$')
In [18]: timeit r.sub(r'\1-\2',s)
1000 loops, best of 3: 459 µs per loop
In [19]: timeit "{}-{}".format(s[:-2],s[-2:]) if s.isdigit() else s
10000 loops, best of 3: 20.7 µs per loop发布于 2015-08-18 16:07:01
我认为1234567将成为12345-67
re.sub(r'^(\d*)(\d{2})$', r'\1-\2', s)https://stackoverflow.com/questions/32077350
复制相似问题