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:
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.
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é.
Pour remplacer un poste spécifique:
s = s[:pos] + s[(pos+1):]
Pour remplacer un personnage spécifique:
s = s.replace('M','')
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.
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.
Utilisez la méthode translate()
:
>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
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 ...
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)
Voici ce que j'ai fait pour découper le "M":
s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]
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
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 .
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.
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))
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'])