Во время работы над проектом мне нужно было получить последний идентификатор (содержащий цифры) из текстового файла, поэтому я нашел различные методы и приемы для быстрого получения желаемого результата.
Во-первых, давайте четко разберемся в сценарии, чтобы вы знали, где можно использовать эти методы.
Предположим, у меня есть текстовый файл с большим объемом данных, содержащий идентификатор и имя сотрудника, например:
Employee_Data = "1 : George , 2 : Peter, 3 : Jake, 4 : Lisa"
Теперь потребуется больше времени, если мы хотим узнать, какой идентификатор является последним, и не можем неоднократно прокручивать вниз, чтобы найти последний идентификатор. На этом этапе эти методы будут нам полезны и дадут требуемый результат следующим образом:
4
Давайте разберемся со всеми методами один за другим с примерами.
- Используя метод re.match()
- С помощью метода re.search()
- С помощью метода re.findall()
- Используя цикл for
- Пользовательская функция
Используя метод 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, а не все число.
Согласно нашим данным, в приведенном выше коде последнее число равно 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.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(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() и нацеливаемся на все числа, существующие в строке, используя «\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 для выбора каждого символа строки и проверки, является ли он цифрой. Если это так, мы инициализируем другую переменную с именем 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))
В приведенном выше коде у нас есть один идентификатор электронной почты «str = ‘[email protected]’», который содержит два разных номера. Я хочу получить последнее число 34 из строки.
Итак, мы создали переменную result = », с пустой строкой. Когда мы фильтруем числа из строки, мы сохраняем эти числа в результате.
Затем мы инициализировали цикл for ” for i in st: “, чтобы настроить таргетинг на каждый символ входной строки и поместить условие внутри цикла for. Если символ представляет собой цифру, добавьте этот символ в результат; в противном случае добавьте запятую.
Затем с помощью метода Split() все числа заносятся в список. Последний номер удаляется из списка с помощью [-1].