- Извлечение чисел из строки в Python
- Использование регулярных выражений
- Использование метода isdigit()
- 2 простые способы извлечения цифр из строки Python
- 2 простые способы извлечения цифр из строки Python
- 1. Использование функции ISDIGIT () для извлечения цифр из строки Python
- 2. Использование библиотеки Regex для извлечения цифр
- Заключение
- Читайте ещё по теме:
- Извлечь из строки числа
- Блог питониста
Извлечение чисел из строки в Python
В программировании на Python часто возникает задача извлечения чисел из строки. Например, у вас есть строка: «привет 12345, как дела 67890?». Вашей задачей является извлечение чисел 12345 и 67890 из этой строки.
Существуют различные подходы к решению этой задачи, но два наиболее распространенных — это использование регулярных выражений и метода isdigit() .
Использование регулярных выражений
Регулярные выражения — это специальный синтаксис для работы с текстом, который позволяет искать и извлекать определенные шаблоны. В Python для работы с регулярными выражениями используется модуль re .
import re line = "привет 12345, как дела 67890?" numbers = re.findall(r'\b\d+\b', line) print(numbers)
В этом коде используется функция findall() , которая возвращает все найденные совпадения. \b\d+\b — это регулярное выражение, которое ищет последовательности цифр.
Использование метода isdigit()
Метод isdigit() является встроенным методом для строк в Python. Он проверяет, состоит ли строка только из цифр.
line = "привет 12345, как дела 67890?" numbers = ''.join(c if c.isdigit() else ' ' for c in line).split() print(numbers)
В этом коде мы проходим по каждому символу в строке и, если символ является цифрой, сохраняем его. Если символ не является цифрой, мы заменяем его на пробел. Затем мы используем метод split() , чтобы разбить строку на список чисел.
Оба подхода эффективны и могут быть использованы в зависимости от конкретной задачи и предпочтений программиста.
2 простые способы извлечения цифр из строки Python
Здравствуйте, читатели! В этой статье мы будем сосредоточиться на способах извлечения цифр из строки Python. Итак, давайте начнем.
2 простые способы извлечения цифр из строки Python
Здравствуйте, читатели! В этой статье мы будем сосредоточиться на способы извлечения цифр из строки Python Отказ Итак, давайте начнем.
1. Использование функции ISDIGIT () для извлечения цифр из строки Python
Python предоставляет нам string.isdigit () Чтобы проверить наличие цифр в строке.
Python Isdigit () Функция возвращает Правда Если входная строка содержит цифровые символы в нем.
Нам не нужно проходить ни один параметр к нему. В качестве вывода он возвращает true или false в зависимости от наличия цифр символов в строке.
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», как показано ниже:
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, оставаться настроенными, а до тех пор, как потом, счастливое обучение !! 🙂.
Читайте ещё по теме:
Извлечь из строки числа
Дана строка, содержащая натуральные числа и слова. Необходимо сформировать список из чисел, содержащихся в этой строке. Например, задана строка «abc83 cde7 1 b 24». На выходе мы должны получить список [83, 7, 1, 24].
Решение задачи на языке программирования Python
Следует посимвольно перебирать строку. Если очередной символ цифра, надо добавить ее в новую строку. Далее проверять символы за ней, и если они тоже цифры, то добавлять их в конец этой новой подстроки из цифр. Когда очередной символ окажется не цифрой, или будет достигнут конец строки, то надо преобразовать строку из цифр в число и добавить в список.
s = input() length = len(s) integers = [] i = 0 # индекс текущего символа while i length: s_int = '' # строка для нового числа while i length and '0' s[i] '9': s_int += s[i] i += 1 i += 1 if s_int != '': integers.append(int(s_int)) print(integers)
5 dkfj78df 9 8 dkfj8 [5, 78, 9, 8, 8]
Обратите внимание, что данное решение извлекает именно числа, а не цифры. Иначе мы бы не получили число 78, а получили отдельно цифру 7 и цифру 8. Задача на извлечение цифр существенно проще.
a = input() num_list = [] num = '' for char in a: if char.isdigit(): num = num + char else: if num != '': num_list.append(int(num)) num = '' if num != '': num_list.append(int(num)) print(num_list)
Если в строке числа всегда отделены от слов пробелами, задача решается проще:
s = input() word_list = s.split() num_list = [] for word in word_list: if word.isnumeric(): num_list.append(int(word)) print(num_list)
Здесь происходит разделение строки на слова по пробелам. В цикле с помощью метода isnumeric каждое слово проверяется, является ли оно числом. Подобную задачу можно решить в одну строку, если использовать функцию filter .
s = input() word_list = s.split() num_list = [int(num) for num in filter( lambda num: num.isnumeric(), word_list)] print(num_list)
В функцию filter передается лямбда-выражение, проверяющее слова, и список слов. Функция возвращает список строк-чисел. Далее с помощью генератора списка строки преобразовываются в целочисленный тип.
На практике при решении подобных задач, когда надо найти и извлечь из строки что-либо, обычно пользуются регулярными выражениями. В примере ниже не обязательно, чтобы число было отделено пробелами.
import re s = input() nums = re.findall(r'\d+', s) nums = [int(i) for i in nums] print(nums)
Для поиска вещественных чисел:
import re s = input() nums = re.findall(r'\d*\.\d+|\d+', s) nums = [float(i) for i in nums] print(nums)
Блог питониста
Недавно была одна задача, в принципе, элементарная, но, видимо, не нaстолько простая, как показалось мне на первый взгляд.
Представьте, что у вас есть строка вида «+7 (123) 4567890» , вам нужно взять из нее только цифры. «Что может быть проще?», — подумал я и, конечно, не сделал так:
1 phone_number = "+7 (123) 4567890" 2 phone_number = phone_number.replace('+', '').replace(' ', '').replace('(', '').replace(')', '')
Кроме того, я решил не использовать регулярки, потому что, как говорится, «Если у тебя есть проблема и ты ее решил регуляркой, то у тебя две проблемы». Я сделал так:
1 phone_number = "+7 (123) 4567890" 2 for char in ('+', ' ', '(', ')'): 3 phone_number = phone_number.replace(char, '')
Это, конечно, лол, но мне тогда показалось это хорошим решением. Но что, если по какой-то причине вариантов нецифровых символов будет больше, что, переписывать код? Не говоря уже о том, что это можно сделать короче и красивее. Увидев этот код, коллега попросил меня его срочно переписать, и он был прав. Сначала стоит вспомнить, что у строки есть метод isdigit :
1 print(''.join([x for x in '+7 (123) 4567890' if x.isdigit()]))
Ну или, к примеру, так, если вы любите лямбды:
1 print(''.join(filter(lambda x: x.isdigit(), "+7 (123) 4567890")))
Кроме того, мое предубеждение по поводу регулярок оказалось чрезмерным. Если рассудить здраво, то их можно и нужно использовать в подходящих ситуациях, просто делать это надо с умом. Как вам, например такой вариант?
1 import re 2 print(re.sub("\D", "", '+7 (123) 4567890'))
1 import re 2 print(''.join(re.findall('\d', '+7 (123) 4567890')))
Этот случай меня научил тому, что никогда не нужно переставать сомневаться в себе и в своем коде. Кто-то говорит, что нужно быть уверенным в себе. Но как тогда быть с вероятностью напороть косяков?
Я не буду строить из себя психолога, мои рассуждения об этом могут показаться бредом, и я правда в этом не разбираюсь, но, мне кажется, здесь есть определенное противоречие: с одной стороны нужно быть уверенным в себе, а следовательно и в своей работе, но с другой стороны нужно критически относиться к себе. Вот, что пишет один человек:
У каждого есть внутренний голос, который время от времени говорит: «лол, ты ничтожество». И без этого внутреннего голоса мы бы не лезли по книгам, не пересматривали по три раза написанное или не убивали бы 20-30 часов в месяц на переписывание «с нуля» уже имеющегося кода\текста\макета (берите любую созидательную профессию). Не знаю, может у женщин психика как-то устроена иначе, но мужской коллектив, состоящий из профессионалов — это Колизей насилия и взаимного угнетения знанием, в котором постоянно льется чья-то интеллектуальная кровь. При этом параллельно эти люди протягивают друг другу «бинты» и прочие «медикаменты» в виде информации и советов. А вот вопрос взаимопомощи и социального контакта — совершенно иная плоскость. При наличии наставника, который покажет на ошибки и научит их исправлять, любой с «синдромом самозванца» будет расти и крепнуть как специалист.
Короче, я к тому, что методы оправдывают цели, в большинстве случаев. И конкретно в моем случае, если бы не постоянный гнет моего внутреннего «самозванца» вкупе с парой-тройкой «церберов», которые тыкали мне на мои ошибки, ничему бы я так толком и не научился. Тепло, ласка, поддержка и кружечка какао — расслабляют, дают ложное чувство «ай, и так сойдет». С другой стороны — никто не может критиковать тебя сильнее, чем ты сам. Если твою работу жестче оценивает кто-то из вне (а не ты сам), при этом тебе кажется эта критика необьективной (при минимум одинаковом уровне компетенции), то, товарищ, у тебя проблемы с самооценкой, что фатально.
Поэтому я не вижу серьезной проблемы в «синдроме самозванца» — это очередной адаптивный механизм психики, без которого этот мир бы не существовал.