Python 2.7,在字符串的最后两位数之前添加一个破折号

时间:2015-08-18 16:04:46

标签: python string python-2.7

使用Python 2.7,我想在字符串的最后两位数之前添加一个破折号,只有在字符串全部为数字时才会添加。

例如:

1234567 变为 12345-78

12345TT 无变化

12345PP678 无变化

ABCDEFGH 无变化

2 个答案:

答案 0 :(得分:4)

您不需要正则表达式来查看字符串是否为全部数字,您可以使用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

答案 1 :(得分:1)

我认为1234567成为12345-67

re.sub(r'^(\d*)(\d{2})$', r'\1-\2', s)