Eu quero remover caracteres em uma string em python:
string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')...
Mas tenho muitos caracteres que tenho que remover. Pensei em uma lista
list = [',', '!', '.', ';'...]
Mas como posso usar o list
para substituir os caracteres no string
?
Respostas:
Se você estiver usando python2 e suas entradas forem strings (não unicodes), o melhor método é
str.translate
:Caso contrário, existem as seguintes opções a serem consideradas:
A. Iterate o assunto char por char, omita caracteres indesejados e
join
a lista resultante:(Observe que a versão do gerador
''.join(c for c ...)
será menos eficiente).B. Crie uma expressão regular em tempo real e
re.sub
com uma string vazia:(
re.escape
garante que os caracteres gostem^
ou]
não quebrem a expressão regular).C. Use a variante de mapeamento de
translate
:Código de teste completo e horários:
Resultados:
(Como uma observação lateral, o número para
remove_chars_translate_bytes
pode nos dar uma pista de por que o setor estava relutante em adotar o Unicode por tanto tempo).fonte
TypeError: translate() takes exactly one argument (2 given)
. Aparentemente, toma o ditado como argumento.Você pode usar
str.translate()
:Exemplo:
fonte
s.translate(dict.fromkeys(map(ord, u",!.;")))
unicode.translate()
método possui parâmetros diferentes dostr.translate()
método. Use a variante no comentário acima para objetos Unicode.Você pode usar o método de conversão .
fonte
fonte
Se você estiver usando python3 e procurando a
translate
solução - a função foi alterada e agora assume 1 parâmetro em vez de 2.Esse parâmetro é uma tabela (pode ser dicionário) em que cada chave é o ordinal Unicode (int) do caractere a ser encontrado e o valor é a substituição (pode ser um ordinal Unicode ou uma string para a qual mapear a chave).
Aqui está um exemplo de uso:
fonte
Outra abordagem usando regex:
fonte
Por que não um loop simples?
Além disso, evite nomear listas 'list'. Ele substitui a função interna
list
.fonte
você poderia usar algo assim
Esse código não é meu e vem daqui, é um ótimo artigo e discute em profundidade isso
fonte
Também um tópico interessante sobre a remoção de sotaque UTF-8 forma uma string que converte char para seu char não acentuado padrão:
Qual é a melhor maneira de remover acentos em uma string unicode python?
extração de código do tópico:
fonte
Talvez uma maneira mais moderna e funcional de alcançar o que você deseja:
observe que, para esse fim específico, é um exagero, mas quando você precisar de condições mais complexas, o filtro será útil
fonte
maneira simples,
resultado:
this-is-string--foo----bar--tuna---sandwich--is---good
fonte
Que tal isso - um forro.
fonte
Eu acho que isso é bastante simples e servirá!
essa é uma maneira de fazer isso. Mas se você está cansado de manter uma lista de caracteres que deseja remover, você pode realmente fazê-lo usando o número do pedido das strings pelas quais itera. o número do pedido é o valor ascii desse caractere. o número ascii para 0 como um caractere é 48 e o número ascii para minúsculas z é 122, portanto:
fonte
Atualmente, estou mergulhando em um esquema e agora acho que sou bom em recorrer e avaliar. HAHAHA. Apenas compartilhe algumas novas maneiras:
primeiro, avalie
segundo, recursá-lo
Ei, não faça voto negativo. Eu só quero compartilhar uma nova idéia.
fonte
Estou pensando em uma solução para isso. Primeiro, eu faria a entrada da string como uma lista. Então eu substituiria os itens da lista. Então, usando o comando join, retornarei a lista como uma string. O código pode ser assim:
Isso removeria qualquer coisa da string. O que você acha disso?
fonte
Aqui está uma
more_itertools
abordagem:Aqui, dividimos os itens encontrados em
blacklist
, achatamos os resultados e juntamos a string.fonte
Python 3, implementação de compreensão de lista de linha única.
fonte
Remover *%,&@! abaixo da string:
fonte