2010-12-01 9 views
2

Je souhaite supprimer le caractère numéro 5 dans une chaîne. Alors je l'ai fait:Python: Supprimer un caractère d'une chaîne

del ligne [5]

et obtenu: TypeError: « str » objet ne supporte pas un objet suppression

Donc non, je me demande s'il y a une autre solution efficace au problème.

Répondre

6

Les chaînes sont immuables en Python, vous ne pouvez donc pas les modifier sur place.

Mais bien sûr, vous pouvez assigner une combinaison de tranches de chaîne à la même identifiant:

mystr = mystr[:5] + mystr[6:] 
+0

Merci! C'est logique. Imaginez si votre réponse pourrait être intégrée dans le message d'erreur python. Et l'image si ce message d'erreur était une sorte de wiki de communauté afin que je puisse l'intégrer moi-même. Je peux accepter la réponse dans 5 minutes. – David

+0

@David: L'immutabilité de certains types de base de Python (en particulier [strings] (http://docs.python.org/tutorial/introduction.html#strings) et [tuples] (http://docs.python.org/ tutorial/datastructures.html # tuples-and-sequences)) est quelque chose qui déroute beaucoup de nouveaux arrivants dans le langage, mais qui a beaucoup de sens et est un concept fondamental de Python. Après tout, vous ne vous attendez pas non plus à pouvoir modifier des valeurs entières sur place. Donc, ceci est considéré comme une connaissance de base de Python; le message d'erreur est assez clair à mon goût. –

+1

Je suis d'accord que c'est clair, on ne peut pas tout écrire dans un message d'erreur. Mais imaginez simplement si tous les messages d'erreur contenaient un lien Web vers une page wiki où toutes les informations/solutions concernant le problème pourraient être incluses. – David

1

J'utilise une fonction similaire à:

def delstring(mystring, indexes): 
    return ''.join([let for ind, let in enumerate(mystring) if ind not in indexes]) 

index devrait être un itérable (liste, tuple ..)

1

bytearray est un type qui peut être changé en place. Et si vous utilisez Python2.x, il peut très facilement être converti en type par défaut: bytes.

b=bytearray(s) 
del b[5] 
s=str(b) 
Questions connexes