2024-10-05 14:24:37 发布
网友
我想知道是否有一种有效的方法来检查一个数字的格式是1\ 2\ 3\ 4\ 5\ 6\ 7\ 8\ 9\ 0,其中'\是一个数字。 例如
192937425462748900
我最初的想法是字符串索引,但我很快发现它太慢了。在python中使用regexing有更好的方法吗?你知道吗
提前谢谢, 阿文德
给你,索引很快O(1)
>>> my_number = 1929374254627488900 >>> int(str(my_number)[1::2]) 997242480 # actual number >>> int(str(my_number)[0::2]) 1234567890 #format
让我们定义一个要测试的字符串:
>>> q = '1929374254627488900'
现在,让我们测试一下:
>>> q[::2] == '1234567890' True
那是匹配的。现在,让我们尝试一个不匹配的:
>>> q = '1929374254627488901' >>> q[::2] == '1234567890' False
这是因为q[::2]返回字符串中的其他所有字符,这些字符是您感兴趣的测试字符。你知道吗
q[::2]
假设我们不确定字符串是否都是数字。在这种情况下,我们添加了一个测试。这应该通过:
>>> q = '1929374254627488900' >>> q[::2] == '1234567890' and q.isdigit() True
然而,由于a,这应该失败:
a
>>> q = '19293742546274889a0' >>> q[::2] == '1234567890' and q.isdigit() False
我们还可以测试正确的长度:
>>> q = '1929374254627488900' >>> q[::2] == '1234567890' and q.isdigit() and len(q) == 19 True
My initial thought was string indexing, but I quickly discovered that it was too slow
很可能你没有使用正确的方法
您总是可以使用regex,但是,带跨步的字符串索引可以比使用regex有更好的性能
st = "1929374254627488900" st[::2] == "1234567890" Out[93]: True
给你,索引很快O(1)
让我们定义一个要测试的字符串:
现在,让我们测试一下:
那是匹配的。现在,让我们尝试一个不匹配的:
这是因为
q[::2]
返回字符串中的其他所有字符,这些字符是您感兴趣的测试字符。你知道吗附加试验
假设我们不确定字符串是否都是数字。在这种情况下,我们添加了一个测试。这应该通过:
然而,由于
a
,这应该失败:我们还可以测试正确的长度:
很可能你没有使用正确的方法
您总是可以使用regex,但是,带跨步的字符串索引可以比使用regex有更好的性能
相关问题 更多 >
编程相关推荐