программа, которая обнаруживает все цифры входной строки в python - PullRequest
0 голосов
/ 26 апреля 2020

ввод:

I am 52 years old. The 48a24 is an example.

вывод:

52, 48, 24

это мой код:

string=''
string=input()

def finddigits(string):
    digits=''
    string.split()
    for i in string:
        if i.isdigit():
            digits += i
    return digits

res = [int(i) for i in string.split() if i.isdigit()]
print(finddigits(string))

но мой вывод не совпадает с тем, что я хочу

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

ваш string.split () - это список слов из входной строки. в вашем бывшем I am 52 years old. The 48a24 is an example только '52' является действительным di git и оценивает True для isdi git (). 'some-string'.isdi git () оценивается как true, если some-string не содержит алфавита или специальных символов.

0 голосов
/ 26 апреля 2020

Вы можете использовать регулярные выражения для этого.

Здесь очень похожий вопрос: Цикл python совпадений регулярных выражений

Вам просто понадобится немного отличное выражение reg от выражения в ответе выше.

Строка регулярного выражения: ([0-9]+) даст вам нужный ответ.

Изучение приведенного выше регулярного выражения:

  • Скобки () предназначены для захвата группы, это часть входных данных, которые вы хотите использовать в качестве выходных.
  • Квадратные скобки [] - это класс регулярных выражений.
  • 0-9 означает любое число от 0 до 9.
  • + после [] означает 1 или более совпадений классов.

Так что в этом случае [0-9] означает совпадение с любым одним числом git. [0-9]+ соответствует любому числу и любому ди git после этого.

Вы можете проверить свои регулярные выражения на этом сайте: https://regex101.com/


Просто дайте мне код:

import re;

s = "I am 52 years old. The 48a24 is an example"
pattern = re.compile(r'([0-9]+)');

for group in re.findall(pattern, s):
    print(group)

Дает вывод:

52
48
24
...