Comment remplacer un ensemble de caractères à l'intérieur d'une autre chaîne de python?
Voici ce que j'essaie de faire: Disons que j'ai une chaîne 'abcdefghijkl' et que je veux remplacer le 2-D du symbole de fin (k) avec A. Je reçois une erreur: p> donc, la question suivante: y a-t-il un moyen élégant de remplacer (substitut) avec une chaîne de symboles à l'intérieur d'une autre chaîne à partir de la position spécifiée? Quelque chose comme: p> Quel serait un code de force non brute pour le STI? P> p>
5 Réponses :
>>> aa = 'abcdefghijkl' >>> changed = aa[0:-2] + 'A' + aa[-1] >>> print changed abcdefghijAl
Vous manquez le caractère «L» traînant.
Si c'est toujours la même position que vous remplacez, vous pouvez faire quelque chose comme: dans le cas général, vous pouvez faire: p> >>> s = "abcdefghijkl"
>>> repl_str = "A"
>>> rindex = -4 #Start at 4th character from the end
>>> repl = 3 #Replace 3 characters
>>> s = s[0:rindex] + (repl_str * repl) + s[rindex+repl:]
>>> print s
abcdefghAAAl
Et si la substitution est plus longue que 1 symbole? 'AAA' au lieu de "A". Et j'ai besoin de remplacer trois symboles dans la chaîne d'origine (pas une avec trois, mais la même longueur que la substitution).
Vous devez couper et instancier une nouvelle chaîne car les chaînes sont immuables:
Une autre façon de faire ceci:
>>> from UserString import MutableString >>> s = MutableString( "zdfgzbdr " ) >>> s 'zdfgzbdr ' >>> s[1:5] 'dfgz' >>> s[1:5] = "xxxx" >>> s 'zxxxxbdr '
Achemandez, vous avez toujours byTarray code>
@gnibbler je suis émerveillé. Je ne savais pas que ce type existe, merci.
Répondre Commentaire de l'autre post:
Pour effectuer une substitution de trois caractères directement avec des chaînes (voir aussi la poste byTeArray), vous pouvez faire une partition avec la séquence, surtout si vous ne connaissez pas la position sans recherche: P >
aa = 'abcdefghijkl' replace = 'def' withstring = 'QRS' newstr,found,endpart = aa.partition(replace) if found: newstr+=withstring+endpart print newstr else: print "%r string is not in %r" % (replace,aa)
stackoverflow.com/questions/ 3463746 / ...