Количество цифр после строки - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть число 444333113333, и я хочу посчитать каждую другую ди git в этом числе.

4 - 3 раза

3 - 3 раза

1 - это 2 раза

3 - это 4 раза

Я пытаюсь создать скрипт, который переводит нажатия клавиш клавиатуры на буквы, как на этой фотографии https://www.dcode.fr/tools/phone-keypad/images/keypad.png если я нажму 3 раза номер 2, тогда буква будет «C»

Я хочу сделать с ним скрипт в python, но не могу ...

Ответы [ 3 ]

2 голосов
/ 21 февраля 2020

Использование регулярных выражений

import re
pattern = r"(\d)\1*"

text = '444333113333'

matcher = re.compile(pattern)
tokens = [match.group() for match in matcher.finditer(text)] #['444', '333', '11', '3333']

for token in tokens:
    print(token[0]+' is '+str(len(token))+' times')

Вывод

4 is 3 times
3 is 3 times
1 is 2 times
3 is 4 times
0 голосов
/ 21 февраля 2020

Это поможет? функция возвращает 2d список с каждым числом и найденной суммой. Затем вы можете прокрутить список и получить каждое из всех значений

def count_digits(num):
    #making sure num is a string
    #adding an extra space so that the code below doesn't skip the last digit
    #there is a better way of doing it but I can't seem to figure out it on spot
    #essemtially it ignores the last set of char so I am just adding a space
    #which will be ignored
    num = str(num) + " "

    quantity = []

    prev_char = num[0]
    count = 0

    for i in num:

        if i != prev_char:

            quantity.append([prev_char,count])
            count = 1
            prev_char = i

        elif i.rfind(i) == ([len(num)-1]):
            quantity.append([prev_char,count])
            count = 1
            prev_char = i

        else:
            count = count + 1






    return quantity

num = 444333113333
quantity = count_digits(num)

for i in quantity:
    print(str(i[0]) + " is " + str(i[1]) + " times" )

Вывод:

4 is 3 times
3 is 3 times
1 is 2 times
3 is 4 times
0 голосов
/ 21 февраля 2020

Вы можете использовать itertools.groupby

num = 444333113333
numstr = str(num)

import itertools


for c, cgroup in itertools.groupby(numstr):
    print(f"{c} count = {len(list(cgroup))}")

Выход:

4 count = 3
3 count = 3
1 count = 2
3 count = 4
...