Как найти цифры в строке в питоне
Перейти к содержимому

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

  • автор:

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

Дана строка, содержащая натуральные числа и слова. Необходимо сформировать список из чисел, содержащихся в этой строке. Например, задана строка «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. Задача на извлечение цифр существенно проще.

Решение через цикл for:

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)

X Скрыть Наверх

Решение задач на Python

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

Рассмотрим основные методы строк, которые мы можем применить в приложениях:

  • isalpha() : возвращает True, если строка состоит только из алфавитных символов
  • islower() : возвращает True, если строка состоит только из символов в нижнем регистре
  • isupper() : возвращает True, если все символы строки в верхнем регистре
  • isdigit() : возвращает True, если все символы строки — цифры
  • isnumeric() : возвращает True, если строка представляет собой число
  • startswith(str) : возвращает True, если строка начинается с подстроки str
  • endswith(str) : возвращает True, если строка заканчивается на подстроку str
  • lower() : переводит строку в нижний регистр
  • upper() : переводит строку в вехний регистр
  • title() : начальные символы всех слов в строке переводятся в верхний регистр
  • capitalize() : переводит в верхний регистр первую букву только самого первого слова строки
  • lstrip() : удаляет начальные пробелы из строки
  • rstrip() : удаляет конечные пробелы из строки
  • strip() : удаляет начальные и конечные пробелы из строки
  • ljust(width) : если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю
  • rjust(width) : если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю
  • center(width) : если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру
  • find(str[, start [, end]) : возвращает индекс подстроки в строке. Если подстрока не найдена, возвращается число -1
  • replace(old, new[, num]) : заменяет в строке одну подстроку на другую
  • split([delimeter[, num]]) : разбивает строку на подстроки в зависимости от разделителя
  • partition(delimeter) : разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов — подстрока до разделителя, разделитель и подстрока после разделителя
  • join(strs) : объединяет строки в одну строку, вставляя между ними определенный разделитель

Например, если мы ожидаем ввод с клавиатуры числа, то перед преобразованием введенной строки в число можно проверить, с помощью метода isnumeric() введено ли в действительности число, и если так, то выполнить операцию преобразования:

string = input("Введите число: ") if string.isnumeric(): number = int(string) print(number)

Проверка, начинается или оканчивается строка на определенную подстроку:

file_name = "hello.py" starts_with_hello = file_name.startswith("hello") # True ends_with_exe = file_name.endswith("exe") # False

Удаление пробелов в начале и в конце строки:

string = " hello world! " string = string.strip() print(string) # hello world!

Дополнение строки пробелами и выравнивание:

print("iPhone 7:", "52000".rjust(10)) print("Huawei P10:", "36000".rjust(10))
iPhone 7: 52000 Huawei P10: 36000

Поиск в строке

Для поиска подстроки в строке в Python применяется метод find() , который возвращает индекс первого вхождения подстроки в строку и имеет три формы:

  • find(str) : поиск подстроки str ведется с начала строки до ее конца
  • find(str, start) : параметр start задает начальный индекс, с которого будет производиться поиск
  • find(str, start, end) : параметр end задает конечный индекс, до которого будет идти поиск

Если подстрока не найдена, метод возвращает -1:

welcome = "Hello world! Goodbye world!" index = welcome.find("wor") print(index) # 6 # поиск с 10-го индекса index = welcome.find("wor",10) print(index) # 21 # поиск с 10 по 15 индекс index = welcome.find("wor",10,15) print(index) # -1

Замена в строке

Для замены в строке одной подстроки на другую применяется метод replace() :

  • replace(old, new) : заменяет подстроку old на new
  • replace(old, new, num) : параметр num указывает, сколько вхождений подстроки old надо заменить на new. По умолчанию num равно -1, что соответствует первой версии метода и приводит к замене всех вхождений.
phone = "+1-234-567-89-10" # замена дефисов на пробел edited_phone = phone.replace("-", " ") print(edited_phone) # +1 234 567 89 10 # удаление дефисов edited_phone = phone.replace("-", "") print(edited_phone) # +12345678910 # замена только первого дефиса edited_phone = phone.replace("-", "", 1) print(edited_phone) # +1234-567-89-10

Разделение на подстроки

Метод split() разбивает строку на список подстрок в зависимости от разделителя. В качестве разделителя может выступать любой символ или последовательность символов. Данный метод имеет следующие формы:

  • split() : в качестве разделителя используется пробел
  • split(delimeter) : в качестве разделителя используется delimeter
  • split(delimeter, num) : параметр num указывает, сколько вхождений delimeter используется для разделения. Оставшаяся часть строки добавляется в список без разделения на подстроки
text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой" # разделение по пробелам splitted_text = text.split() print(splitted_text) print(splitted_text[6]) # дуб, # разбиение по запятым splitted_text = text.split(",") print(splitted_text) print(splitted_text[1]) # в два обхвата дуб # разбиение по первым пяти пробелам splitted_text = text.split(" ", 5) print(splitted_text) print(splitted_text[5]) # обхвата дуб, с обломанными ветвями и с обломанной корой

Еще один метод — partition() разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов — подстрока до разделителя, разделитель и подстрока после разделителя:

text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой" text_parts = text.partition("дуб") print(text_parts) # ('Это был огромный, в два обхвата ', 'дуб', ', с обломанными ветвями и с обломанной корой')

Если разделитель с строке не найден, то возвращается кортеж с одной строкой.

Соединение строк

При рассмотрении простейших операций со строками было показано, как объединять строки с помощью операции сложения. Другую возможность для соединения строк представляет метод join() : он объединяет список строк. Причем текущая строка, у которой вызывается данный метод, используется в качестве разделителя:

words = ["Let", "me", "speak", "from", "my", "heart", "in", "English"] # разделитель - пробел sentence = " ".join(words) print(sentence) # Let me speak from my heart in English # разделитель - вертикальная черта sentence = " | ".join(words) print(sentence) # Let | me | speak | from | my | heart | in | English

Вместо списка в метод join можно передать простую строку, тогда разделитель будет вставляться между символами этой строки:

word = "hello" joined_word = "|".join(word) print(joined_word) # h|e|l|l|o

Выбрать числа из строки

Задана строка, состоящая из букв и цифр. Извлечь из строки числа (не цифры) и вывести их на экран.

# исходная строка s = input() # длина строки l = len(s) # индекс первого элемента строки i = 0 # Пока индекс меньше длины: while i < l: # Создадим пустую переменную для # хранения очередного числа. num = '' # Извлечем текущий символ строки. symbol = s[i] # Этот цикл выполняется, только если # очередной символ является цифрой. while symbol.isdigit(): # Добавим символ в конец значения # переменной num. num = num + symbol # Перейдем к индексу # следующего символа. i += 1 # Если индекс выходит за пределы строки, # то цикл надо прервать. # Если же мы находимся внутри строки, # то следует извлечь очередной символ, # который будет проверяться # в следующей итерации внутреннего цикла, # является ли он цифрой. if i < l: symbol = s[i] else: break # Если переменная num не пуста, то в ней # содержится строковое представление числа. # При желании эту строку можно преобразовать # к числу с помощью функции int(). if num != '': print(num) # Переход к индексу следующего символа. i += 1
Похожие записи:
  1. Эффективный ввод-вывод в разных языках программирования
  2. В матрице найти строку и столбец с максимальными суммами элементов
  3. Оперативная память и представление данных
  4. Регулярные выражения

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

Многие современные телевизоры среднего и нижнего ценового диапазона не способны обеспечить качественное звучание. Во

Книга «CRM-системы» представляет собой обзор и анализ различных CRM-систем, используемых в современном бизнесе. Автор рассматривает популярные

Как вывести последнюю цифру числа в python

Обложка для статьи

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

Получение последней цифры числа путём преобразование числа в строку

Получение последней цифры числа в Python можно выполнить, преобразовав число в строку и обратившись к последнему символу этой строки. Для преобразования числа в строку в Python можно использовать функцию str() . Далее, для получения длины строки, мы можем использовать функцию len() , и после обратиться к последнему элементу строки по его индексу (длина строки — 1, так как индексация идёт с 0):

number = 123456 string_number = str(number) last_digit = string_number[len(string_number)-1] print(last_digit)

В этом примере мы сначала преобразуем число в строку с помощью функции str(), а затем получаем длину строки с помощью функции len(). Мы используем длину строки для получения индекса последнего символа (который является последней цифрой числа) и сохраняем его в переменной last_digit. Наконец, мы выводим последнюю цифру числа с помощью функции print().

Приведённый ваше код можно упростить, если знать, что извлечь последний символ строки можно, используя отрицательный индекс -1 :

number = 123456 last_digit = str(number)[-1] print(last_digit)

Использование арифметических операций для получения последней цифры

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

Например, чтобы получить последнюю цифру числа 123, можно выполнить следующую операцию:

123 % 10

Результатом будет число 3, которое является последней цифрой числа 123.

Такой подход является более простым и эффективным, чем преобразование числа в строку и использование индексации.

Однако, стоит учитывать, что если число отрицательное, то данный подход не сработает. В таком случае, можно использовать функцию abs() для получения модуля числа, а затем применить операцию % .

number = -12345 last_digit = abs(number) % 10 print(last_digit) # выводит 5

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *