Pergunta sobre python, regex – Removendo a primeira aparição da palavra de uma string?

13

Eu não estou familiarizado com o regex, e seria ótimo se alguém dando uma solução usando o regex pudesse explicar sua sintaxe para que eu possa aplicá-lo em situações futuras.

Eu tenho uma string (ou seja,'Description: Mary had a little lamb'), e gostaria de remover'Description: ' de tal forma que a string iria ler'Mary had a little lamb,' mas apenas a primeira instância, tal que se a cadeia fosse'Description: Description', a nova string seria'Description.'

Alguma ideia? Obrigado!

Você sabia que a primeira instância sempre estará no início da string? Mark Byers

Sua resposta

3   a resposta
32

Python'sstr.replace tem um argumento max replace. Então, no seu caso, faça isso:

>>>mystring = "Description: Mary had a little lamb Description: "
>>>print mystring.replace("Description: ","",1)

"Mary had a little lamb Description: "

Usando regex é basicamente exatamente o mesmo. Primeiro, pegue seu regex:

"Description: "

Como o Python é muito bom em regexes, é apenas a string que você deseja remover nesse caso. Com isso, você quer usá-lo em re.sub, que também tem uma variável count:

>>>import re
>>>re.sub("Description: ","",mystring,count=1)
'Mary had a little lamb Description: '
@omu_negru Não, não. O padrão é todas as ocorrências. jamylak
você não precisa especificar o terceiro argumento como o padrão é 1 omu_negru
@omu_negru Não padrão 1, o padrão é ... Nada, eu acho. Se você não tiver o terceiro argumento, ele substituirá todas as instâncias, não apenas a primeira. Josiah
Ah, acabou de descobrir sobre .replace () alguns minutos atrás, obrigado! Ainda seria útil saber usar o regex zhuyxn
@zhuyxn Atualizado para ter uma solução de regex. Josiah
2

palavra", não apenas "Descrição:"

>>> import re
>>> s = 'Blah: words words more words'
>>> print re.sub(r'^\S*\s', '', s)
words words more words
>>> 
@ Josias, melhor serias.partition(" ")[2]. Duncan
Se você apenas quisesse remover a primeira palavra em uma string, você não usaria apenas "" .join (s.split ("") [1:])? Josiah
0

Usandoregex basta especificar o parâmetro de contagem como1 emre.sub. Embora pareçaregex não é necessário neste caso.

>>> import re
>>> text = 'Description: Mary had a little lamb'
>>> re.sub('Description: ','',text,1)
'Mary had a little lamb'
Posso perguntar o que o parâmetro count está fazendo? song0089
@ song0089 Apenas 1 substituição jamylak
Ah, ok obrigado pela sua ajuda! zhuyxn

Perguntas relacionadas