首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 2.7,在字符串的最后两个数字之前添加一个破折号

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

Stack Overflow用户
提问于 2015-08-18 16:04:45
回答 2查看 197关注 0票数 3

使用Python2.7,我想在字符串的最后两个数字之前添加一个破折号,只有在字符串都是数字的情况下。

例如:

1234567 变成 12345-78

12345 no无变化

12345PP678 无变化

ABCDEFGH 无变化

EN

回答 2

Stack Overflow用户

发布于 2015-08-18 16:59:41

您不需要一个正则表达式来查看一个字符串是否都是数字,您可以使用str.isdigit (如果它都是数字),切片并添加一个"-",如果不按原样离开:

代码语言:javascript
复制
s = "1234578"

s ="{}-{}".format(s[:-2],s[-2:]) if s.isdigit() else s
print(s)
12345-78

它也比使用正则表达式更有效。

代码语言:javascript
复制
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
票数 5
EN

Stack Overflow用户

发布于 2015-08-18 16:07:01

我认为1234567将成为12345-67

代码语言:javascript
复制
re.sub(r'^(\d*)(\d{2})$', r'\1-\2', s)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32077350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档