Как найти все цифры в строке python

This is more than a bit late, but you can extend the regex expression to account for scientific notation too.

import re

# Format is [(<string>, <expected output>), ...]
ss = [("apple-12.34 ba33na fanc-14.23e-2yapple+45e5+67.56E+3",
       ['-12.34', '33', '-14.23e-2', '+45e5', '+67.56E+3']),
      ('hello X42 I'm a Y-32.35 string Z30',
       ['42', '-32.35', '30']),
      ('he33llo 42 I'm a 32 string -30', 
       ['33', '42', '32', '-30']),
      ('h3110 23 cat 444.4 rabbit 11 2 dog', 
       ['3110', '23', '444.4', '11', '2']),
      ('hello 12 hi 89', 
       ['12', '89']),
      ('4', 
       ['4']),
      ('I like 74,600 commas not,500', 
       ['74,600', '500']),
      ('I like bad math 1+2=.001', 
       ['1', '+2', '.001'])]

for s, r in ss:
    rr = re.findall("[-+]?[.]?[d]+(?:,ddd)*[.]?d*(?:[eE][-+]?d+)?", s)
    if rr == r:
        print('GOOD')
    else:
        print('WRONG', rr, 'should be', r)

Gives all good!

Additionally, you can look at the AWS Glue built-in regex

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given a string str containing numbers and alphabets, the task is to find all the numbers in str using regular expression. 

    Examples:

    Input: abcd11gdf15hnnn678hh4 
    Output: 11 15 678 4 

    Input: 1abcd133hhe0 
    Output: 1 133 0

    Recommended: Please try your approach on {IDE} first, before moving on to the solution.

    Approach: The idea is to use Python re library to extract the sub-strings from the given string which match the pattern [0-9]+. This pattern will extract all the characters which match from 0 to 9 and the + sign indicates one or more occurrence of the continuous characters. 

    Below is the implementation of the above approach: 

    Python3

    import re

    def getNumbers(str):

        array = re.findall(r'[0-9]+', str)

        return array

    str = "adbv345hj43hvb42"

    array = getNumbers(str)

    print(*array)

    Time Complexity : O(n), where n is length of str string.

    Auxiliary Space : O(n), where n is length of array.

    Last Updated :
    08 May, 2023

    Like Article

    Save Article

    Автор оригинала: Pankaj Kumar.

    Здравствуйте, читатели! В этой статье мы будем сосредоточиться на способы извлечения цифр из строки Python Отказ Итак, давайте начнем.

    1. Использование функции ISDIGIT () для извлечения цифр из строки Python

    Python предоставляет нам string.isdigit () Чтобы проверить наличие цифр в строке.

    Python Isdigit () Функция возвращает Правда Если входная строка содержит цифровые символы в нем.

    Синтаксис :

    Нам не нужно проходить ни один параметр к нему. В качестве вывода он возвращает true или false в зависимости от наличия цифр символов в строке.

    Пример 1:

    inp_str = "Python4Journaldev"
    
    print("Original String : " + inp_str) 
    num = ""
    for c in inp_str:
        if c.isdigit():
            num = num + c
    print("Extracted numbers from the list : " + num) 
    
    

    В этом примере мы имеем итерацию входной строки символа по символу с использованием A для LOOP. Как только функция ISDIGIT () сталкивается с цифрой, она будет хранить его в строковую переменную с именем «NUM».

    Таким образом, мы видим вывод, как показано ниже

    Выход:

    Original String : Python4Journaldev
    Extracted numbers from the list : 4
    

    Теперь мы можем даже использовать понимание списка Python для клуба итерации и iDigit () в одну строку.

    При этом цифры символов хранятся в списке «Num», как показано ниже:

    Пример 2:

    inp_str = "Hey readers, we all are here be 4 the time!"
    
    
    print("Original string : " + inp_str) 
    
    
    num = [int(x) for x in inp_str.split() if x.isdigit()] 
    
     
    print("The numbers list is : " + str(num)) 
    
    

    Выход:

    Original string : Hey readers, we all are here be 4 the time!
    The numbers list is : [4]
    

    2. Использование библиотеки Regex для извлечения цифр

    Библиотека регулярных выражений Python называется « » Библиотека Regex «Позволяет нам обнаружить наличие конкретных символов, таких как цифры, некоторые специальные символы и т. Д. Из строки.

    Нам нужно импортировать библиотеку Regex в среду Python, прежде чем выполнять любые дальнейшие шаги.

    Далее мы мы Re.findall (R ' D +', String) Чтобы извлечь цифры символов из строки. Часть ‘ D +’ поможет функцию findall () для обнаружения наличия любой цифры.

    Пример:

    import re
    inp_str = "Hey readers, we all are here be 4 the time 1!"
    
    
    print("Original string : " + inp_str) 
    
    num = re.findall(r'd+', inp_str) 
    
    print(num)
    
    

    Итак, как видно ниже, мы получим список всех цифр из строки.

    Выход:

    Original string : Hey readers, we all are here be 4 the time 1!
    ['4', '1']
    

    Заключение

    По этому, мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если вы столкнетесь с любым вопросом.

    Я рекомендую всем вам попробовать реализацию приведенных выше примеров с использованием структур данных, таких как списки, Dict и т. Д.

    Для большего количества таких постов, связанных с Python, оставаться настроенными, а до тех пор, как потом, счастливое обучение !! 🙂.

    Anna Muller

    0 / 0 / 0

    Регистрация: 20.03.2018

    Сообщений: 54

    1

    Найти в строке все цифры и вывести их

    10.04.2018, 15:57. Показов 41139. Ответов 19

    Метки нет (Все метки)


    Студворк — интернет-сервис помощи студентам

    Сама задача
    Пусть дано строку, на основе этой строки сформируйте новый, содержащая только цифры.
    Выведите строку.

    код

    Python
    1
    2
    
    str=input('Строка:')
    print(''.join(s for s in str if s.isdigit()))



    0



    1289 / 906 / 479

    Регистрация: 05.12.2013

    Сообщений: 3,067

    10.04.2018, 16:00

    2

    Проще чем в одну строку?



    0



    Рыжий Лис

    Просто Лис

    Эксперт Python

    4944 / 3252 / 1008

    Регистрация: 17.05.2012

    Сообщений: 9,526

    Записей в блоге: 9

    10.04.2018, 16:13

    3

    Лучший ответ Сообщение было отмечено Anna Muller как решение

    Решение

    Может быть человек не понимает, как работают генераторы.

    Держи ради разнообразия регулярку:

    Python
    1
    2
    3
    4
    
    #!/usr/bin/python3
    import re
    s = input('Строка:')
    print(re.sub(r'D', '', s))



    1



    Wi0M

    394 / 122 / 48

    Регистрация: 26.10.2013

    Сообщений: 734

    10.04.2018, 16:32

    4

    Python
    1
    
    print(''.join((s for s in str if s.isdigit())))

    Добавлено через 2 минуты

    Python
    1
    2
    3
    4
    
    s for s in str if s.isdigit() # это SyntaxError
    (s for s in str if s.isdigit()) # это генератор
    [s for s in str if s.isdigit()] # это списковое выражение
    # а еще есть dict comprehension. но это уже совсем другая история)) пусть останется в качестве домашнего задания



    1



    woldemas

    654 / 458 / 212

    Регистрация: 06.09.2013

    Сообщений: 1,266

    10.04.2018, 16:36

    5

    Python
    1
    2
    
    s = input('Строка:')
    print("".join(filter(str.isdigit, s)))



    0



    vic5710

    856 / 639 / 248

    Регистрация: 10.12.2016

    Сообщений: 1,557

    10.04.2018, 16:37

    6

    Цитата
    Сообщение от Anna Muller
    Посмотреть сообщение

    print(”.join(s for s in str if s.isdigit()))

    Python
    1
    2
    
    s = input('Строка:')
    print(''.join[i for i in s if i.isdigit()])

    str служебное слово питона, не надо перекрывать



    0



    394 / 122 / 48

    Регистрация: 26.10.2013

    Сообщений: 734

    10.04.2018, 16:42

    7

    вы че реально не видите что ваши строчки с join вам выплюнут SyntaxError ?))) дважды написали два разных человека) а ошибка одна и таже)))

    Добавлено через 26 секунд
    во втором случае еще хуже кстати чем в первом))



    0



    1289 / 906 / 479

    Регистрация: 05.12.2013

    Сообщений: 3,067

    10.04.2018, 16:48

    8

    В варианте с filter не выплюнет



    0



    654 / 458 / 212

    Регистрация: 06.09.2013

    Сообщений: 1,266

    10.04.2018, 16:48

    9

    Цитата
    Сообщение от Wi0M
    Посмотреть сообщение

    вы че реально не видите что ваши строчки с join вам выплюнут SyntaxError ?)))

    это какие?



    0



    1289 / 906 / 479

    Регистрация: 05.12.2013

    Сообщений: 3,067

    10.04.2018, 16:49

    10

    Цитата
    Сообщение от vic5710
    Посмотреть сообщение

    print(”.join[i for i in s if i.isdigit()])

    тут не хватает скобок у join



    0



    654 / 458 / 212

    Регистрация: 06.09.2013

    Сообщений: 1,266

    10.04.2018, 16:50

    11

    Цитата
    Сообщение от ТабуретY
    Посмотреть сообщение

    тут не хватает скобок у join

    это да, но мой вариант с filter, там не может быть синтаксической ошибки



    0



    1289 / 906 / 479

    Регистрация: 05.12.2013

    Сообщений: 3,067

    10.04.2018, 16:52

    12

    Цитата
    Сообщение от woldemas
    Посмотреть сообщение

    но мой вариант с filter, там не может быть синтаксической ошибки

    Об этом я написал выше



    0



    vic5710

    856 / 639 / 248

    Регистрация: 10.12.2016

    Сообщений: 1,557

    10.04.2018, 16:54

    13

    Python
    1
    2
    
    s = input('Строка:')
    print(''.join([i for i in s if i.isdigit()]))

    точно исправил



    0



    394 / 122 / 48

    Регистрация: 26.10.2013

    Сообщений: 734

    10.04.2018, 18:37

    14

    woldemas, да в том то и дело что я не про фитр я про код ТС и vic5710

    Добавлено через 34 секунды

    Не по теме:

    хотя, думаю, вы уже и так все поняли)



    0



    0 / 0 / 0

    Регистрация: 25.12.2021

    Сообщений: 1

    25.12.2021, 18:09

    15

    Строго не судите, я начинающий прогер xD
    text = set(input())
    print(text)
    n_list = []
    for i in text:
    if ‘0’ <= i <= ‘9’:
    n_list.append(i)
    print(”.join(sorted(n_list)))



    0



    285 / 166 / 89

    Регистрация: 21.03.2016

    Сообщений: 398

    25.12.2021, 18:23

    16

    Цитата
    Сообщение от Alex54rus
    Посмотреть сообщение

    Строго не судите, я начинающий прогер xD

    Судить не будем, казним без суда и следствия.

    text = set(input()) – почему именно set
    и зачем вообще весь этот код, если три года назад эту тему разжевали.

    Добавлено через 1 минуту
    if ‘0’ <= i <= ‘9’: – Зачем? есть isdigit()



    0



    1509 / 479 / 56

    Регистрация: 10.04.2009

    Сообщений: 8,059

    25.12.2021, 19:31

    17

    isalnum-это когда нужно достать только алфавитно-цифровые символы
    а как достать только буквы без регулярок, is….?



    0



    4466 / 3146 / 1112

    Регистрация: 21.03.2016

    Сообщений: 7,832

    25.12.2021, 20:07

    18

    Ципихович Эндрю, isalpha() не, не слышал???



    1



    1509 / 479 / 56

    Регистрация: 10.04.2009

    Сообщений: 8,059

    25.12.2021, 20:38

    19

    Понял спасибо большое



    0



    Am I evil? Yes, I am!

    Эксперт PythonЭксперт Java

    15823 / 8956 / 2596

    Регистрация: 21.10.2017

    Сообщений: 20,636

    25.12.2021, 23:02

    20

    Цитата
    Сообщение от Semen-Semenich

    isalpha()

    Что ж ты ему не рассказал и про isbeta(), isgamma(), islambda()… ?



    0



    IT_Exp

    Эксперт

    87844 / 49110 / 22898

    Регистрация: 17.06.2006

    Сообщений: 92,604

    25.12.2021, 23:02

    Помогаю со студенческими работами здесь

    По заданной строке вывести все цифры, имеющиеся в ней
    По заданной строке вывести все цифры, имеющиеся в ней.

    Вывести все цифры, встречающиеся в символьной строке больше одного раза
    Напишите программу, которая выводит все цифры, встречающиеся в символьной строке больше одного…

    Вывести все цифры, встречающиеся в символьной строке больше одного раза
    Входные данные
    Входная строка может содержать содержит цифры, пробелы и латинские буквы.

    Вывести все цифры, встречающиеся в символьной строке больше одного раза
    Напишите программу, которая выводит все цифры, встречающиеся в символьной строке больше одного…

    Искать еще темы с ответами

    Или воспользуйтесь поиском по форуму:

    20

    29.12.2019Python, Программы Python

    Много раз, работая со строками, мы сталкиваемся с проблемой, в которой нам нужно получить все числовые вхождения. Этот тип проблемы обычно возникает в конкурентном программировании, а также в веб-разработке. Давайте обсудим некоторые способы решения этой проблемы.

    Способ № 1: Использование списка понимания + isdigit() + split()
    Эта проблема может быть решена с помощью функции split для преобразования строки в список, а затем понимание списка, которое может помочь нам перебрать список и функция isdigit помогает вывести цифру из строки.

    test_string = "There are 2 apples for 4 persons"

    print("The original string : " + test_string)

    res = [int(i) for i in test_string.split() if i.isdigit()]

    print("The numbers list is : " + str(res))

    Выход :

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    

    Способ № 2: Использование re.findall()
    Эта конкретная проблема также может быть решена с помощью регулярного выражения Python, мы можем использовать функцию findall для проверки числовых вхождений с использованием соответствующей строки регулярного выражения.

    import re

    test_string = "There are 2 apples for 4 persons"

    print("The original string : " + test_string)

    temp = re.findall(r'd+', test_string)

    res = list(map(int, temp))

    print("The numbers list is : " + str(res))

    Выход :

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    

    Рекомендуемые посты:

    • Python | Извлечение чисел из списка строк
    • Python | Извлечь слова из заданной строки
    • Python | Извлечь цифры из заданной строки
    • Python | Извлекать только символы из заданной строки
    • Python | Извлечь список очков из строки
    • Python Regex для извлечения максимального числового значения из строки
    • Python | Извлечь длину самой длинной строки в списке
    • numpy.extract () в Python
    • Python | Извлечь элемент наименьшей частоты
    • Python | Извлечь ключ-значение из словаря в переменные
    • Извлечение изображений из видео в Python
    • Python | Извлечение URL из HTML с использованием lxml
    • Python | Извлечь строки размера K
    • Python | Pandas Series.str.extract ()
    • Python | Извлечение определенных ключей из словаря

    Python | Извлечь числа из строки

    0.00 (0%) 0 votes

    Добавить комментарий