Wie erstelle ich einen String in einer Funktion mit einem anderen String in Python?

Ich möchte das machen:

>>> special = 'x' >>> random_function('Hello how are you') 'xxxxx xxx xxx xxx' 

Ich möchte grundsätzlich den String zurückgeben: {(str) -> str}

Ich bleibe immer Variablen undefiniert.

Tut mir leid, das ist meine erste Post.

4 Solutions collect form web for “Wie erstelle ich einen String in einer Funktion mit einem anderen String in Python?”

Da Strings in Python unveränderlich sind, muss jedes Mal, wenn Sie die replace() Methode verwenden, eine neue Zeichenfolge erstellt werden. Jeder Aufruf, der ersetzt werden soll, muss auch den gesamten String durchlaufen. Dies ist offensichtlich ineffizient, wenn auch nicht bemerkbar auf dieser Skala.

Eine Alternative ist es, eine Liste comprehesion ( docs , Tutorial ) zu verwenden, um die Zeichenfolge einmal zu durchlaufen und eine Liste der neuen Zeichen zu erstellen. Die Methode isalnum() kann als Test verwendet werden, um nur alphanumerische Zeichen zu ersetzen (dh Leerzeichen, Interpunktion etc. unberührt zu lassen).

Der letzte Schritt ist, die join() -Methode zu verwenden, um die Zeichen zusammen in den neuen String zu verbinden. Anmerkung in diesem Fall verwenden wir die leere Zeichenfolge '' , um die Zeichen zusammen mit nichts dazwischen zu verbinden. Wenn wir ' '.join(new_chars) haben, würde es einen Raum zwischen jedem Charakter geben, oder wenn wir 'abc'.join(new_chars) dann wären die Buchstaben abc zwischen jedem Charakter.

 >>> def random_function(string, replacement): ... new_chars = [replacement if char.isalnum() else char for char in string] ... return ''.join(new_chars) ... >>> random_function('Hello how are you', 'x') 'xxxxx xxx xxx xxx' 

Natürlich solltest du diese Funktion wohl einen logischeren Namen geben als random_function()

Dies kann leicht mit regex gemacht werden:

 >>> re.sub('[A-Za-z]', 'x', 'Hello how are you') 'xxxxx xxx xxx xxx' 
 def hide(string, replace_with): for char in string: if char not in " !?.:;": # chars you don't want to replace string = string.replace(char, replace_with) # replace char by char return string print hide("Hello how are you", "x") 'xxxxx xxx xxx xxx' 

Schauen Sie sich auch die String- und Re- Module an.

Nicht sicher, ob ich das in einen Kommentar oder eine ganze Antwort hinzufügen sollte? Wie jemand anderes vorschlug, würde ich vorschlagen, die regex verwenden, aber Sie können die \w Zeichen verwenden, um auf jeden Buchstaben des Alphabets zu verweisen. Hier ist der vollständige Code:

  import re def random_function(string): newString=re.sub('\w', 'x', string) return(newString) print(random_function('Hello how are you')) 

Sollte xxxxx xxx xxx xxx drucken

  • Wie bekomme ich die erste datetime eines Tages?
  • Tkinter aktivieren Fenster unter Windows XP
  • Rock Paper Scissors - Python 3 - Anfänger
  • Was ist der Zweck von collections.ChainMap?
  • Wo kann man einen Log-Dateinamen in Python speichern?
  • Socket ResourceWarning mit urllib in Python 3
  • Wie man beitreten, um Splitted Linien mit dem Ersetzen von Daten aus einer Datei in die gleiche Zeichenfolge
  • Python auf FreeBSD installieren 8.1
  • Erhalten Sie Webseiteninhalte mit Python?
  • Warum ist der gleichwertige Python-Code so viel langsamer
  • Mehrere Klassen in PyQt4
  • Python ist die beste Programmiersprache der Welt.