Este código simples que simplesmente tenta substituir o ponto-e-vírgula (em posições especificadas por i) por dois-pontos não funciona:
for i in range(0,len(line)):
if (line[i]==";" and i in rightindexarray):
line[i]=":"
Dá o erro
line[i]=":"
TypeError: 'str' object does not support item assignment
Como posso contornar isso para substituir o ponto-e-vírgula por dois-pontos? Usar substituir não funciona porque essa função não leva nenhum índice - pode haver alguns pontos-e-vírgulas que eu não quero substituir.
Exemplo
Na string, posso ter qualquer número de ponto e vírgula, por exemplo, "Hei der!; Hello there;!;"
Eu sei quais desejo substituir (tenho seu índice na string). O uso de substituir não funciona porque não consigo usar um índice com ele.
str.replace()
BIF?str.find()
vez disso, use para encontrar a posição do ponto-e-vírgula e, em seguida, use o fatiamento para extrair a substring.Respostas:
Strings em python são imutáveis, então você não pode tratá-los como uma lista e atribuir a índices.
Usar
.replace()
lugar:Se você precisar substituir apenas alguns pontos-e-vírgulas, será necessário ser mais específico. Você pode usar o fatiamento para isolar a seção da string para substituir em:
Isso substituirá todos os pontos-e-vírgulas nos primeiros 10 caracteres da string.
fonte
Você pode fazer o seguinte, para substituir qualquer caractere por um respectivo caractere em um determinado índice, se não desejar usar
.replace()
fonte
Transforme a string em uma lista; então você pode mudar os personagens individualmente. Então você pode colocá-lo de volta junto com
.join
:fonte
Se você deseja substituir um único ponto e vírgula:
Embora ainda não tenha testado.
fonte
line.replace(src,dst)
não.line[:10].replace(src,dst) + line[10:]
faz, mas com muito menos gravidade. Suponhaline = ';'*12
. Sua solução construirá uma nova string 12 vezes. A solução aceita o fará uma vez.Isso deve abranger um caso um pouco mais geral, mas você deve ser capaz de personalizá-lo para seu propósito
Espero que isto ajude
fonte
Você não pode simplesmente atribuir valor a um caractere na string. Use este método para substituir o valor de um caractere específico:
Saída: In * ia
Além disso, se você deseja substituir, diga * para todas as ocorrências do primeiro caractere, exceto o primeiro caractere, por exemplo. string = balbucio output = ba ** le
Código:
fonte
Se você estiver substituindo por um valor de índice especificado na variável 'n', tente o seguinte:
fonte
Que tal agora:
fonte
para usar o método .replace () efetivamente na string sem criar uma lista separada, por exemplo, dê uma olhada na lista de nome de usuário que contém a string com algum espaço em branco, queremos substituir o espaço em branco por um sublinhado em cada string do nome de usuário.
para substituir os espaços em branco em cada nome de usuário, considere o uso da função range em python.
fonte
Para substituir um caractere em um índice específico, a função é a seguinte:
onde s é uma string, n é um índice ec é um caractere.
fonte
Escrevi este método para substituir caracteres ou substituir strings em uma instância específica. as instâncias começam em 0 (isso pode ser facilmente alterado para 1 se você alterar o argumento opcional inst para 1 e a variável test_instance para 1.
fonte
Você consegue fazer isso:
fonte
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
nomes de usuário = []
o, p Joey_Tribbiani Monica_Geller Chandler_Bing Phoebe_Buffay
fonte