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

标签 python string python-2.7

使用 Python 2.7,我想在字符串的最后两位数字前添加一个破折号,前提是字符串全部为数字。

例如:

1234567 变成 12345-78

12345TT 无变化

12345PP678 无变化

ABCDEFGH 无变化

最佳答案

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

关于Python 2.7,在字符串的最后两位数字前添加破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32077350/

相关文章:

python-2.7 - 如何在谷歌云函数中用python做出http响应

python - 无法安装 chromedriver-binary

python - Python 中的日期可以感知时区吗?

java - Android - JSONArray 上的 toString 使用双引号和反斜杠使 json 无效

ruby - 在 Ruby 中将 "&"替换为 "\&"似乎不可能?

python - 找不到有关 'NameError: date' 的信息

python - 如何获取列表中的第一个非空项

python - 衍生进程中的操作系统环境变量读取

java - 如何将第一个字符更改为数字?

python-2.7 - 将 Pandas 数据框的行转换为列