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

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

Предположим, у меня есть текстовый файл с большим объемом данных, содержащий идентификатор и имя сотрудника, например:

Employee_Data = "1 : George , 2 : Peter, 3 : Jake, 4 : Lisa"

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

4

Давайте разберемся со всеми методами один за другим с примерами.

Содержание

Используя метод re.match()

Сначала мы будем использовать метод match() модуля re в Python, который соответствует шаблону строки в Python.

Итак, мы найдем последнее число в строке в Python, используя метод match(), включая шаблоны регулярных выражений внутри метода match() в качестве параметра.

Давайте посмотрим практический пример получения последней цифры строки в Python с помощью метода re.match().

import re

text = 'India": +91,"United Kingdom": +44,"Japan": +81,"United States": +1,"Australia": ? '

match = re.match('.+([0-9])[^0-9]*$',text)

if match:
    print('The last number is:', match.group(1))
else:
    print('The given string does not have any number')

Примечание. Этот метод извлекает только однозначное число. Если последнее число — 82, будет получено только 2, а не все число.

Используя метод re.match()

Согласно нашим данным, в приведенном выше коде последнее число равно 1. Мы получаем эту цифру с помощью метода re.match() в Python. Мы используем шаблон регулярного выражения.
«re.match(‘.+([0-9])[^0-9]*$’,text)» согласно нашему требованию.

Давайте разберемся с шаблоном re.match(‘.+([0-9])[^0-9]*$’,text) который мы используем для извлечения последней цифры строки:

  • re.match(): используется для сопоставления с шаблоном строки.
  • ” .+ “: этот шаблон соответствует любому символу один или несколько раз.
  • ([0-9]): этот шаблон соответствует одной цифре.
  • [^0-9]*: он будет соответствовать символу, который не является цифрой в Python.
  • ” $ “: используется для соответствия концу строки

Объединив все это, мы извлекаем последнюю цифру строки в Python.

В предыдущем примере мы извлекаем последнее однозначное число, но что, если мы хотим извлечь последнее целое число в строке? Чтобы решить эту проблему, мы можем использовать метод re.search(), встроенный метод модуля re.

Функция re.search() используется для поиска образца строки и возврата объекта соответствия, подобного этому, если шаблон найден в строке, в противном случае он вернет None.

Синтаксис:

re.search("pattern", "string")
  • re.search(«шаблон», «строка»): прежде чем использовать метод re.search(), вам необходимо сначала импортировать модуль re.
  • («шаблон», «строка»): шаблон — это слово или символ, который вы ищете в строке.
import re

text = 'India": +91,"United States": +1,"United Kingdom": +44,"Japan": +81,"Australia": ? '

result2 = re.search(r'\d+', text[::-1]).group()[::-1]
result3 = re.search(r'(\d+)\D+$', text).group(1)

print(result2)
print(result3)

С помощью метода re.search()

В приведенном выше коде мы включаем две разные логики в метод re.search() и получаем одинаковый результат от обоих этих методов: «re.search(r’\d+’, text[::-1]).group(). [::-1]» и «re.search(r'(\d+)\D+$’, text).group(1)». Оба шаблона найдут последнюю цифру числа в Python.

С помощью метода re.findall()

re.findall() — это очень мощный и простой метод Python для поиска любого шаблона в строке. Если шаблон соответствует строке, он вернет все вхождения в списке, в противном случае он вернет пустой список.

Синтаксис:

re.findall("pattern", "string")
  • re.findall(«шаблон», «строка»): есть еще один параметр, называемый flag = 0, который является необязательным параметром, и мы не будем использовать этот параметр в соответствии с нашими требованиями.
import re

text = 'India": +91,"United States": +1,"United Kingdom": +44,"Japan": +81,"Australia": ? '

result = re.findall(r'\d+', text)[-1]

print(result)

С помощью метода re.findall()

У нас есть данные телефонного кода страны в строковом формате в коде, и я хочу получить последний код набора из данных. Итак, мы используем метод re.findall() и нацеливаемся на все числа, существующие в строке, используя «\d», например: «result = re.findall(r’\d+’, text)[-1]».

А [-1] возьмет последний элемент из списка.

Используя цикл for

Мы также можем использовать цикл for, если хотим получить последнюю цифру строки в Python. Кроме того, в этом примере мы используем оператор прерывания, чтобы остановить цикл, когда он удовлетворяет условию.

string = "1 : George , 2 : Peter, 3 : Jake, 4 : Lisa"
for i in range(len(string) - 1, -1, -1):
    if string[i].isdigit():
        last_number = string[i]
        break
print(last_number)

Используя цикл for

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

Мы используем цикл for для выбора каждого символа строки и проверки, является ли он цифрой. Если это так, мы инициализируем другую переменную с именем Last_number, а затем используем оператор Break для выхода из цикла.

Пользовательская функция

Мы также можем создать нашу логику для извлечения последнего количества строк в Python, объединив в одной программе различные встроенные методы, такие как Split(), Append(), isdigit() и т. д.

Эти методы не дадут вам желаемого результата напрямую. Вы должны понимать, как они работают и где эту технику необходимо применять.

Позвольте мне показать вам, как получить последнее число из строки в Python, создав пользовательскую функцию.

def get_last_num(st):
    result = ''
    for i in st:
        if i.isdigit():
            result+=i
        else:
            result+=','

    result1 = result.split(',')
    output = []
    
    for i in result1:
        if i != '':
            output.append(i)
    
    return f"Last Number of the string :{output[-1]}"

str = '[email protected]'
print(get_last_num(str))

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

В приведенном выше коде у нас есть один идентификатор электронной почты «str = ‘[email protected]’», который содержит два разных номера. Я хочу получить последнее число 34 из строки.

Итак, мы создали переменную result = », с пустой строкой. Когда мы фильтруем числа из строки, мы сохраняем эти числа в результате.

Затем мы инициализировали цикл for ” for i in st: “, чтобы настроить таргетинг на каждый символ входной строки и поместить условие внутри цикла for. Если символ представляет собой цифру, добавьте этот символ в результат; в противном случае добавьте запятую.

Затем с помощью метода Split() все числа заносятся в список. Последний номер удаляется из списка с помощью [-1].

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