In python mehrere Buchstaben vertauschen?

4 Antworten

Du könntest beispielsweise zunächst 'x' durch etwas anderes ersetzen, wovon du sicher weißt, dass es sonst im String nicht vorkommt. Dann könntest du 'y' durch 'x' ersetzen, und schließlich dann das vorher eingeführte Ersatzzeichen durch 'y' ersetzen. Also beispielsweise so...

a = 'xy'
b = a.replace('x', 'z')
c = b.replace('y', 'x')
d = c.replace('z', 'y')
print(d)

Problematisch ist bei diesem Weg dann allerdings, wenn das Ersatzzeichen (im konkreten Fall 'z') im ursprünglichen Text vorkommt. Denn dann werden auch die Vorkommnisse aus dem ursprünglichen Text durch 'y' ersetzt.

============

Eine bessere Möglichkeit ohne Ersatzzeichen wären beispielsweise...

def tausche(Text, x, y):
    if type(Text) != str:
        raise TypeError('expected Text to be string')
    if type(x) != str:
        raise TypeError('expected x to be string')
    if type(y) != str:
        raise TypeError('expected y to be string')
    d = {x: y, y: x}
    out = ''.join([d.get(c, c) for c in Text])
    return(out)

#Beispiel:
Text1 = 'xyxyxxyy'
Text2 = tausche(Text1, 'x', 'y')
print(Text2)

... oder...

def tausche(Text, x, y):
    if type(Text) != str:
        raise TypeError('expected Text to be string')
    if type(x) != str:
        raise TypeError('expected x to be string')
    if type(y) != str:
        raise TypeError('expected y to be string')
    L = Text.split(x)
    out = y.join([s.replace('y', 'x') for s in L])
    return(out)

#Beispiel:
Text1 = 'xyxyxxyy'
Text2 = tausche(Text1, 'x', 'y')
print(Text2)

Da spare ich mir erst einmal größere Erläuterungen. Du kannst aber gerne nachfragen, wenn du Fragen dazu hast.

Du könntest einen Zwischenschritt einbauen, bei dem ein Buchstabe durch eine praktisch nie vorkommende Zeichenkette ersetzt wird.

a = xy
b = a.replace("x", "ä§ß")
c = b.replace("y", "x")
d = c.replace("ä§ß"; "y")
print(d)

Denis332 
Fragesteller
 15.04.2020, 23:34

Sehr schlau, soweit hab ich garnicht gedacht. Ich hab jedoch schon eine Antwort bekommen mit dem str.translate("yx", "xy") command. Trotzdem vielen Dank:)

0

a=xy

b= yy ersetze x in a durch y

c=xx ersetze y in b durch x

Wenn du genau erklärst, was das machen soll, können wir dir besser helfen.

Wenn ab wobei a ein Zeichen und b ein Zeichen ist, das Ergebnis ba sein soll, dann kannst du es einfach umdrehen :)

text = "xy"[::-1]

Woher ich das weiß:Studium / Ausbildung – Ich studiere beides.
>>> a='Waxyt'
>>> a.replace('xy','yx')
'Wayxt'

Solltest DU etwas anderes suchen, dann beschreibe bitte genauer, was gemacht werden soll.