在python中重新帮助

时间:2016-09-17 07:30:44

标签: python regex string

我想知道是否有一种有效的方法来检查数字的格式是否为1_2_3_4_5_6_7_8_9_0,其中'_'是一个数字。 例如,

1 9 2 9 3 7的 4 2的 5 4 6 2的 7 4的 8 8的 9 0的 0

我的初期虽然是字符串索引,但我很快发现它太慢了。有没有更好的方法在python中使用regexing?

提前致谢,                 Arvind的

3 个答案:

答案 0 :(得分:1)

让我们定义一个要测试的字符串:

>>> q = '1929374254627488900'

现在,让我们测试一下:

>>> q[::2] == '1234567890'
True

匹配。现在,让我们尝试一下不匹配的内容:

>>> q = '1929374254627488901'
>>> q[::2] == '1234567890'
False

这是有效的,因为q[::2]会返回字符串中的所有其他字符,而这些字符是您有兴趣测试的字符。

附加测试

假设我们不确定字符串是否都是数字。在这种情况下,我们添加一个测试。这应该通过:

>>> q = '1929374254627488900'
>>> q[::2] == '1234567890' and q.isdigit()
True

然而,由于a,这应该失败:

>>> q = '19293742546274889a0'
>>> q[::2] == '1234567890' and q.isdigit()
False

我们还可以测试正确的长度:

>>> q = '1929374254627488900'
>>> q[::2] == '1234567890' and q.isdigit() and len(q) == 19
True

答案 1 :(得分:0)

  

我最初的想法是字符串索引,但我很快就发现了   它太慢了

很可能你没有使用正确的方法

你总是可以使用正则表达式但是,使用步长的字符串索引可以比使用正则表达式具有更好的性能

st = "1929374254627488900"
st[::2] == "1234567890"
Out[93]: True

答案 2 :(得分:0)

在这里,索引是快速O(1)

>>> my_number = 1929374254627488900
>>> int(str(my_number)[1::2])
997242480 # actual number
>>> int(str(my_number)[0::2])
1234567890     #format