получить последнее слово из строки в python

#python

#python

Вопрос:

Предположим str = 'UPPER("Sales"."PRODUCT_NAME" )' , это моя строка, и я хочу получить только 'PRODUCT_NAME' (последнее слово) из этой строки. Я попробовал нижеприведенный метод, но он не дает мне правильного слова as 'PRODUCT_NAME' . Как я могу этого добиться? Есть ли какой-нибудь простой способ добиться этого с помощью регулярных выражений?

 str='UPPER("Sales"."PRODUCTS"."PRODUCT_NAME" )'
val=str.strip("(|)")
val=val.split('.')
val_final=val[-1].strip('"')
  

Ответ №1:

Используя re.findall для параметра регулярного выражения, мы можем попробовать:

 inp = 'UPPER("Sales"."PRODUCTS"."PRODUCT_NAME" )'
output = re.findall(r'^.*b(w ).*$', inp)
print(output[0])   # prints PRODUCT_NAME
  

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

Комментарии:

1. @WasifHasan … я думаю, штраф, уплаченный за слепое копирование OP…

Ответ №2:

strip() Метод удаляет материал только с концов строки, поэтому вам нужно сделать это после извлечения последнего слова (с дополнительными символами, которые вам не нужны):

 string = 'UPPER("Sales"."PRODUCTS"."PRODUCT_NAME" )'
val_final = string.split('.')[-1].strip('" )')
  

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

Подробнее о strip()

Это удаляет все символы, предоставленные с обоих концов строки. Я подозреваю, что '(|)' вы имеете в виду '(' или ')' . Просто напишите это как split('()') . В приведенном выше решении я не учел, '(' поскольку оно не отображается в конце строки. Но '"' и ' ' делает, поэтому я включил их.