Поиск по сайту:

Программа Python для извлечения строк с цифрой


В этой статье мы научимся извлекать строки с цифрами в Python.

Используемые методы

Ниже приведены различные методы выполнения этой задачи:

  • Использование понимания списка, функций Any() и isdigit().

  • Использование функций Any(), filter() и лямбда.

  • Без использования каких-либо встроенных функций

  • Использование функции ord()

Пример

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

Вход

inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

Выход

List of Strings containing any digits:
['hello562', 'python20', '100']

В приведенном выше списке ввода элементы «hello562», «python20», «100» содержат цифры. Следовательно, они извлекаются из входного списка.

Способ 1: использование понимания списка, функций Any() и isdigit().

Алгоритм (шаги)

Ниже приводится алгоритм/шаги, которые необходимо выполнить для выполнения желаемой задачи.

  • Создайте переменную для хранения входного списка строк.

  • Распечатайте входной список.

  • Используйте List Comprehension, чтобы пройти через элементы входного списка и проверить, содержит ли строка какие-либо цифры посимвольно, используя функцию any() (возвращает True, если какой-либо элемент в итерируемом объекте является true, иначе возвращает False) и функцию isdigit().

  • функция isdigit() — если все символы являются цифрами, метод isdigit() возвращает True; в противном случае он возвращает False.

  • Распечатайте результирующий список строк, содержащий любые цифры.

Пример

Следующая программа возвращает список, который извлекает строки, содержащие цифры, из входного списка, используя понимание списка, функции Any() и isdigit():

# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

# printing input list
print("Input list:", inputList)

# traversing through list elements and checking if the string

# contains any digit character
outputList = [item for item in inputList if any(c for c in item if c.isdigit())]

# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Способ 2. Использование функций Any(), filter() и лямбда.

Функция filter() — фильтрует указанную последовательность с помощью функции, которая определяет, должен ли каждый элемент в последовательности быть истинным или ложным.

Лямбда-функция

Лямбда-функция — это анонимная функция небольшого размера.

Лямбда-функция может иметь неограниченное/любое количество аргументов, но только одно выражение.

Синтаксис

lambda arguments : expression

Пример

Следующая программа возвращает список, который извлекает строки, содержащие цифры, из входного списка, используя функции Any(), filter() и лямбда:

# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

# printing input list
print("Input list:", inputList)

# filtering the list elements if any string character is a digit
outputList = list(filter(lambda s: any( e for e in s if e.isdigit()), inputList))

# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Способ 3: без использования каких-либо встроенных функций

функция replace() — возвращает копию строки, которая заменяет все вхождения старой подстроки другой новой подстрокой.

Синтаксис

string.replace(old, new, count)

Пример

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

# function that returns string with digits by accepting input string as an argument
def newFunction(str):
   
   # initializing all digits
   digitsStr= "0123456789"

   # storing the string passed to the function in a temp variable
   temp = str
   
   # traversing through each digit in the above digits string
   for d in digitsStr:
      
      # replacing that digit with space
      str = str.replace(d, "")
   
   # checking whether the length of the temp variable string is not equal to the passed string
   if(len(temp) != len(str)):
      
      # returning true if the condition is true
         return True
      
      # else returning false
         return False

# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

# printing input list
print("Input list:", inputList)

# empty list for storing list elements containing digits
outputList = []

# traversing through each element of the input list
for element in inputList:
   
   # checking whether the above defined newFunction() returns true
   if newFunction(element):
      
      # appending that element to the output list
         outputList.append(element)

# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Способ 4: использование функции ord()

функция ord() — возвращает код Юникода данного символа в виде числа.

Пример

Следующая программа возвращает список, который извлекает строки, содержащие цифры, из входного списка без использования функции ord():

# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

# printing input list
print("Input list:", inputList)

# empty list for storing list elements containing digits
outputList = []

# traversing through each element of the input list
for element in inputList:
   
   # traversing through each character of the current element
   for c in element:
      
      # checking whether the ASCII value of char is greater than or
      
      # equal to 0 and less than or equal to 9
      if(ord(c) >= ord('0') and ord(c) <= ord('9')):
         
         # appending that element to output list
            outputList.append(element)
         
         # breaking the loop
            break

# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Заключение

Из данного списка строк мы узнали 4 различных способа извлечения строковых элементов, содержащих цифры. Также мы научились фильтровать список по условию. Мы также узнали, что вместо использования вложенных списков для применения условий можно использовать метод Any() внутри лямбда-функции.

Статьи по данной тематике: