#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('()')
. В приведенном выше решении я не учел, '('
поскольку оно не отображается в конце строки. Но '"'
и ' '
делает, поэтому я включил их.