我需要一个python或postgres脚本,将检查字符串中是否包含6个或更多数字的副本。例如,"811811113111711","822222222255555"
应该给出真值,"812345678901234"
应该给出假值。字符串是一个数字,总是相同的length - 16
和starts with 8
,在此之前验证。
目前有这个,但它是一个非常基本的解决方案,只适用于彼此相邻的字符,我需要所有的数字。
a_string = "811111111111111"
matches = ["000000", "111111", "222222", "333333", "444444", "555555", "666666", "777777", "888888", "999999"]
if any([x in a_string for x in matches]):
print('true')
else:
print('false')
您可能想使用collections.Counter
。这可以看作是一个多集合,即一个值可以多次出现的集合。它是用一个字典实现的,其中键是集合项,值是出现的次数。
例如,
>>> from collections import Counter
>>> Counter("11333111333")
Counter({'3': 6, '1': 5})
从那里你可以过滤计数器,看看你是否有相关的数据:
some_counter = Counter(some_string)
duplicate_digits = {k : v for k,v in some_counter.items() if k in "0123456789" and v >= 6}
如果duplicate_digits
不为空,表示已成功计数一个数字超过6次。