web-dev-qa-db-fra.com

Comment supprimer un caractère d'une chaîne en utilisant Python

Il y a une chaîne, par exemple. EXAMPLE.

Comment puis-je supprimer le caractère du milieu, c'est-à-dire M? Je n'ai pas besoin du code. Je veux savoir:

  • Les chaînes en Python se terminent-elles par un caractère spécial?
  • Quelle est la meilleure solution - tout déplacer de droite à gauche à partir du caractère central OR pour créer une nouvelle chaîne et ne pas copier le caractère central?
362
Lazer

En Python, les chaînes sont immuables, vous devez donc créer une nouvelle chaîne. Vous avez quelques options pour créer la nouvelle chaîne. Si vous souhaitez supprimer le 'M' où qu'il apparaisse:

newstr = oldstr.replace("M", "")

Si vous souhaitez supprimer le personnage central:

midlen = len(oldstr)/2
newstr = oldstr[:midlen] + oldstr[midlen+1:]

Vous avez demandé si les chaînes se terminaient par un caractère spécial. Non, vous pensez comme un programmeur C. En Python, les chaînes sont stockées avec leur longueur. Ainsi, toute valeur d'octet, y compris \0, peut apparaître dans une chaîne.

515
Ned Batchelder

C'est probablement le meilleur moyen:

original = "EXAMPLE"
removed = original.replace("M", "")

Ne vous inquiétez pas pour changer de personnage ou autre. La plupart du code Python se situe à un niveau d'abstraction beaucoup plus élevé.

58
recursive

Pour remplacer un poste spécifique:

s = s[:pos] + s[(pos+1):]

Pour remplacer un personnage spécifique:

s = s.replace('M','')
52
Eton B.

Les cordes sont immuables. Mais vous pouvez les convertir en une liste modifiable, puis reconvertir la liste en une chaîne après l'avoir modifiée.

s = "this is a string"

l = list(s)  # convert to list

l[1] = ""    # "delete" letter h (the item actually still exists but is empty)
l[1:2] = []  # really delete letter h (the item is actually removed from the list)
del(l[1])    # another way to delete it

p = l.index("a")  # find position of the letter "a"
del(l[p])         # delete it

s = "".join(l)  # convert back to string

Vous pouvez également créer une nouvelle chaîne, comme d'autres l'ont montré, en prenant tout sauf le caractère souhaité dans la chaîne existante.

23
kindall

Comment puis-je supprimer le personnage du milieu, c'est-à-dire M?

Vous ne pouvez pas, car les chaînes en Python sont immuables .

Les chaînes en Python se terminent-elles par un caractère spécial?

Non, ils sont similaires aux listes de caractères; la longueur de la liste définit la longueur de la chaîne et aucun caractère ne fait office de terminateur.

Quelle est la meilleure solution - tout déplacer de droite à gauche à partir du caractère central OR pour créer une nouvelle chaîne et ne pas copier le caractère central?

Vous ne pouvez pas modifier la chaîne existante, vous devez donc en créer une nouvelle contenant tout sauf le caractère du milieu.

11
Richard Fearn

Utilisez la méthode translate() :

>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
10
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)

Comment supprimer un caractère d’une chaîne: Voici un exemple de pile de cartes représentée sous forme de caractères dans une chaîne . L’un d’eux est dessiné (module random import pour la variable random. La fonction choice (), qui sélectionne un caractère aléatoire dans la chaîne) . Une nouvelle chaîne, cardsLeft, est créée pour contenir les cartes restantes données par la fonction string replace () où le dernier paramètre indique qu’une seule "carte" doit être remplacé par la chaîne vide ...

5
StaffanRolfsson

UserString.MutableString

Manière Mutable:

import UserString

s = UserString.MutableString("EXAMPLE")

>>> type(s)
<type 'str'>

# Delete 'M'
del s[3]

# Turn it for immutable:
s = str(s)
5
killown

Voici ce que j'ai fait pour découper le "M":

s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]
3
PaulM

Si vous souhaitez supprimer/ignorer des caractères dans une chaîne et, par exemple, vous avez cette chaîne,

"[11: L: 0]"

à partir d'une réponse API Web ou quelque chose comme ça, comme un fichier CSV, disons que vous utilisez des demandes

import requests
udid = 123456
url = 'http://webservices.yourserver.com/action/id-' + udid
s = requests.Session()
s.verify = False
resp = s.get(url, stream=True)
content = resp.content

boucle et se débarrasser des caractères indésirables:

for line in resp.iter_lines():
  line = line.replace("[", "")
  line = line.replace("]", "")
  line = line.replace('"', "")

Split facultatif, et vous pourrez lire les valeurs individuellement:

listofvalues = line.split(':')

Maintenant, accéder à chaque valeur est plus facile:

print listofvalues[0]
print listofvalues[1]
print listofvalues[2]

Cela va imprimer

11

L

0

3
d1jhoni1b
def kill_char(string, n): # n = position of which character you want to remove
    begin = string[:n]    # from beginning to n (n not included)
    end = string[n+1:]    # n+1 through end of string
    return begin + end
print kill_char("EXAMPLE", 3)  # "M" removed

J'ai vu cela quelque part ici .

3
user1443297

Pour supprimer une char ou un sub-string une fois (uniquement la première occurrence): 

main_string = main_string.replace(sub_str, replace_with, 1)

NOTE: Ici, 1 peut être remplacé par n'importe quelle int pour le nombre d'occurrences à remplacer. 

0
BlackBeard
from random import randint


def shuffle_Word(word):
    newWord=""
    for i in range(0,len(Word)):
        pos=randint(0,len(Word)-1)
        newWord += Word[pos]
        Word = Word[:pos]+Word[pos+1:]
    return newWord

Word = "Sarajevo"
print(shuffle_Word(word))
0

Vous pouvez simplement utiliser la compréhension de liste.

Supposons que vous avez la chaîne: my name is et que vous souhaitez supprimer le caractère m. utilisez le code suivant:

"".join([x for x in "my name is" if x is not 'm'])
0
hubert