Автор оригинала: Shubham Sayon.
Резюме: Чтобы извлечь числа из заданной строки в Python, вы можете использовать один из следующих способов:
- Используйте
Regex
модуль.
- Использовать
Сплит ()
иДобавить ()
Функции на Список Отказ - Используйте Понимание списка с
Isdigit ()
иСплит ()
Функции. - Используйте
num_from_string
модуль.
Извлечение цифр или чисел из заданной строки могут придумать в вашем пути кодирования довольно часто. Независимо от того, автоматизируете ли вы скрипт в Python, и вы хотите извлечь определенные численные цифры из файла CSV или вы являетесь ученым данных, и вам необходимо отделить сложные цифры и цифры от данных узоров, или вы энтузиасты Python, который хочет узнать больше о Строки и численные типы данных, то вы, безусловно, найдуте эту статью полезную. Сказав это, давайте погрузимся в нашу миссию – критический вопрос:
Проблема: Учитывая строку; Как извлечь числа из строки в Python?
Пример: Подумайте, что вам дали строку, и вы хотите извлечь все номера из строки, как указано в следующем примере:
Дано следующая строка:
Extract 100, 1000 and 10000 from this string
Это ваш желаемый выход:
[100, 1000, 10000]
Давайте обсудим методы, которые мы можем использовать для извлечения чисел из данной строки:
Способ 1: Использование модуля Regex
Самый эффективный подход к решению нашей проблемы состоит в том, чтобы использовать силу Regex
модуль. Вы можете легко использовать регулярные выражения ( Regex
), чтобы проверить, если данная строка содержит указанный шаблон (будь то цифра или специальный символ или любой другой шаблон).
Таким образом, решить нашу проблему, мы должны импортировать модуль Regex, который уже включен в стандартную библиотеку Pythons, а затем с помощью findall ()
Функция мы можем извлечь числа из данной строки.
◈ findall ()
Это простое в использовании функция Regex, которая возвращает список, содержащее все совпадения. Чтобы узнать больше о findall ()
Проверьте нашу Учебник в блоге здесь.
Давайте посмотрим на следующий код, чтобы понять, как мы можем использовать Regex
Модуль для решения нашей проблемы:
import re sentence = 'Extract 100 , 100.45 and 10000 from this string' s = [float(s) for s in re.findall(r'-?\d+\.?\d*', sentence)] print(s)
Выход
[100.0, 100.45, 10000.0]
Способ 2: Разделение и добавление номеров в список, используя функции Split () и добавления ()
Другой обходной путь для нашей проблемы состоит в том, чтобы разделить данную строку, используя Сплит ()
Функция, а затем извлечь числа, используя встроенный поплавок ()
Метод затем добавить извлеченные числа к Список Отказ
Примечание:
Сплит ()
Это встроенный метод Python, который используется для разделения строки в список.Добавить ()
Это встроенный метод в Python, который добавляет элемент к концу списка.
Теперь, когда у нас есть необходимые инструменты для решения нашей проблемы на основе вышеуказанной концепции, давайте погрузимся в код, чтобы увидеть, как он работает:
sentence = 'Extract 100 , 100.45 and 10000 from this string' s = [] for t in sentence.split(): try: s.append(float(t)) except ValueError: pass print(s)
Выход
[100.0, 100.45, 10000.0]
Способ 3: Использование функции ISDIGIT () в понимании списка
Другой подход к решению нашей проблемы состоит в том, чтобы использовать Isdigit ()
Встроенная функция для извлечения цифр из строки, а затем хранить их в списке с помощью Понимание списка Отказ Isdigit ()
Функция используется для проверки, если данная строка содержит цифры. Таким образом, если он найдет персонаж, который является цифрой, то он возвращает True, в противном случае он возвращает false.
Давайте посмотрим на код, приведенный ниже, чтобы увидеть, как работает вышеуказанная концепция:
sentence = 'Extract 100 , 100.45 and 10000 from this string' s = [int(s) for s in str.split(sentence) if s.isdigit()] print(s)
Выход
[100, 10000]
☢ Оповещение! Эта техника лучше всего подходит для извлечения только положительных целых чисел. Он не будет работать для отрицательных целых чисел, поплавков или шестнадцатеричных чисел.
Способ 4: Использование номеров из строкой библиотеки
Это быстрый взлом, если вы хотите избежать проведения времени, за помощью явного кода для извлечения чисел из строки. Вы можете импортировать библиотеку, известную как nums_from_string
а затем используйте его для извлечения чисел из данной строки. Он содержит несколько правил REGEX с всесторонним покрытием и могут быть очень полезным инструментом для исследователей NLP.
Поскольку количество из строки библиотеки не является частью стандартной библиотеки Python, вы должны установить его, прежде чем иметь возможность его использовать. Используйте следующую команду для установки этой полезной библиотеки:
pip install nums_from_string
Следующая программа демонстрирует использование nums_from_string
:
import nums_from_string sentence = 'Extract 100 , 100.45 and 10000 from this string' print(nums_from_string.get_nums(sentence))
Выход
[100.0, 100.45, 10000.0]
Вывод
Таким образом, из вышеперечисленных обсуждений мы обнаружили, что существует множество способов извлечения ряда из заданной строки в Python. Мой личный фаворит, хотя наверняка будет модулем Regex. Вы можете утверждать, что используя другие методы, такие как Isdigit ()
и Сплит ()
Функции обеспечивают проще и более читаемый код и быстрее. Однако, как упоминалось ранее, он не возвращает числа, которые являются отрицательными (в ссылке на метод 2), а также не работают для поплавков, которые не имеют места между ними и другими символами, такими как «25 .50k »(в ссылке на метод 2). Кроме того, скорость – это рода неактуальная метрика, когда речь идет о разборке журнала. Теперь вы видите, почему Regex является моим личным фаворитом в этом списке решений.
Если вы не очень поддерживаете Re библиотека Особенно потому, что вам трудно получить сильный захват этой концепции (так же, как я в начале), вот Учебное пособие для вас, чтобы стать мастером Regex. 😉.
Я надеюсь, что вы нашли эту статью полезную и добавили некоторое значение для вашего путешествия по кодированию. Пожалуйста, оставайтесь настроенными для более интересных вещей в будущем.
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @: