Retornar string com todos os caracteres não alfanuméricos com barra invertida; isso é útil se você deseja corresponder a uma sequência literal arbitrária que pode conter metacaracteres de expressão regular.
A partir do Python 3.7 re.escape()foi alterado para escapar apenas caracteres significativos para operações de regex.
No padrão de pesquisa , inclua \os caracteres que você está procurando. Você estará usando \para escapar de seus personagens, então você precisa escapar
disso também.
Coloque parênteses em torno do padrão de pesquisa , por exemplo ([\"]), para que o
padrão de substituição possa usar o caractere encontrado quando ele for adicionado \à sua frente. (É o que
\1faz: usa o valor do primeiro grupo entre parênteses.)
A rfrente de r'([\"])'significa que é uma string crua . Sequências brutas usam regras diferentes para escapar de barras invertidas. Para escrever ([\"])como uma sequência simples, você precisará dobrar todas as barras invertidas e escrever '([\\"])'. Sequências brutas são mais amigáveis quando você escreve expressões regulares.
No padrão de substituição , você precisa escapar \para diferenciá-lo de uma barra invertida que precede um grupo de substituição, por exemplo \1, portanto r'\\\1'. Para escrever
isso como uma sequência simples, você precisaria '\\\\\\1'- e ninguém quer isso.
Isso não funciona se a cadeia é Unicode, porque você vai ter u e deve ser executadorepr(x)[2:-1]
Antoine Pelisse
No python3.4, onde todas as strings são unicode, isso parece não funcionar, infelizmente. Em vez disso, print(repr("I'm stuck")[1:-1])imprime I'm stuck.
precisa saber é o seguinte
3
Como foi mencionado acima, a resposta depende do seu caso. Se você quiser escapar de uma string para uma expressão regular, use re.escape (). Mas se você quiser escapar de um conjunto específico de caracteres, use esta função lambda:
>>> escape =lambda s, escapechar, specialchars:"".join(escapechar + c if c in specialchars or c == escapechar else c for c in s)>>> s = raw_input()
I'm "stuck" :\
>>> print s
I'm "stuck":\
>>>print escape(s,"\\",['"'])
I'm \"stuck\" :\\
Respostas:
Usar
re.escape
Repetindo aqui:
A partir do Python 3.7
re.escape()
foi alterado para escapar apenas caracteres significativos para operações de regex.fonte
regex.escape(pattern,string,special_only=True
Estou surpreso que ninguém tenha mencionado o uso de expressões regulares via
re.sub()
:Coisas importantes a serem observadas:
\
os caracteres que você está procurando. Você estará usando\
para escapar de seus personagens, então você precisa escapar disso também.([\"])
, para que o padrão de substituição possa usar o caractere encontrado quando ele for adicionado\
à sua frente. (É o que\1
faz: usa o valor do primeiro grupo entre parênteses.)r
frente der'([\"])'
significa que é uma string crua . Sequências brutas usam regras diferentes para escapar de barras invertidas. Para escrever([\"])
como uma sequência simples, você precisará dobrar todas as barras invertidas e escrever'([\\"])'
. Sequências brutas são mais amigáveis quando você escreve expressões regulares.\
para diferenciá-lo de uma barra invertida que precede um grupo de substituição, por exemplo\1
, portantor'\\\1'
. Para escrever isso como uma sequência simples, você precisaria'\\\\\\1'
- e ninguém quer isso.fonte
Use repr () [1: -1]. Nesse caso, as aspas duplas não precisam ser escapadas. A fatia [-1: 1] é para remover as aspas simples do começo e do fim.
Ou talvez você só queira escapar de uma frase para colar no seu programa? Se sim, faça o seguinte:
fonte
repr(x)[2:-1]
print(repr("I'm stuck")[1:-1])
imprimeI'm stuck
.Como foi mencionado acima, a resposta depende do seu caso. Se você quiser escapar de uma string para uma expressão regular, use re.escape (). Mas se você quiser escapar de um conjunto específico de caracteres, use esta função lambda:
fonte
Não é tão difícil:
fonte
characters
melhor que seja a primeira!Se você deseja substituir apenas alguns caracteres, pode usar isso:
fonte