Я хотел бы заменить количество с именем, а затем квадратной скобкой и одной цитатой с содержимым внутри. Таким образом, из этого:Python regex - Заменить одиночные кавычки и скобки
RSQ(name['BAKD DK'], name['A DKJ'])
к этому:
RSQ(BAKD DK, A DKJ)
Я хотел бы заменить количество с именем, а затем квадратной скобкой и одной цитатой с содержимым внутри. Таким образом, из этого:Python regex - Заменить одиночные кавычки и скобки
RSQ(name['BAKD DK'], name['A DKJ'])
к этому:
RSQ(BAKD DK, A DKJ)
код -
import re
s = "RSQ(name['BAKD DK'], name['A DKJ'])"
expr = r"[\'\[\]]|\bname\b"
print(re.sub(expr, '', s))
Выход -
RSQ(BAKD DK, A DKJ)
Я не думаю, что это выражение является надежным. Представьте, что у вас есть что-то (имя ['BAKD DK'], имя ['A DKJ']) 'строка ввода. В результате вы получите 'sothig (BAKD DK, A DKJ)' - явно не то, о чем спрашивал ОП. – alecxe
@alecxe Вы правы. Я отредактирую свой ответ. –
Хорошо, но теперь, если бы у нас было бы имя (имя ['BAKD DK'], имя ['A DKJ']) '? .. в любом случае, если ответ принят, то он, вероятно, соответствует потребностям OP на момент. Удалено нисходящее. Спасибо. – alecxe
Вы также можете использовать сберегательные группы для извлечения строк из внутри name['something']
:
>>> import re
>>> s = "RSQ(name['BAKD DK'], name['A DKJ'])"
>>> re.sub(r"name\['(.*?)'\]", r"\1", s)
'RSQ(BAKD DK, A DKJ)'
где (.*?)
является capturing group, который соответствовал бы любым символам, любому количество раз в non-greedy fashion. \1
ссылается на захваченную группу в заменяющей строке.
просто из любопытства, что было бы регулярным выражением для изменения данного ввода на 'XYZ (BAKD DK, A DKJ)' – rock321987
@ rock321987 уверен, если вы хотите заменить 'RSQ' на' XYZ' также, вероятно, я сделаю это в отдельном вызове 're.sub()', что-то вроде 're.sub (r"^(\ w +) (? = \() ", r" \ 1 ", s) '. – alecxe
да..хорошо мне интересно узнать, можно ли это сделать в одном регулярном выражении? – rock321987
Какая у вас проблема в этом, или вы просто просите кого-то сделать эту работу за вас? –