Entfernen von nicht beschädigten Leerzeichen aus Zeichenfolgen mit Python



1 Answers

Nein, u"\u00A0" ist der Escape-Code für nicht brechende Leerzeichen. "\u00A0" ist 6 Zeichen, die keine Art von Escape-Code sind. Lesen Sie dies .

Question

Ich habe Probleme mit einem sehr einfachen String-Problem in Python (das kann ich nicht herausfinden). Im Grunde versuche ich Folgendes:

'# read file into a string 
myString =  file.read()

'# Attempt to remove non breaking spaces 
myString = myString.replace("\u00A0"," ")

'# however, when I print my string to output to console, I get: 
Foo **<C2><A0>** Bar

Ich dachte, dass "\ u00A0" der Escape-Code für unicode non breaking spaces ist, aber anscheinend mache ich das nicht richtig. Irgendwelche Ideen, was ich falsch mache?




Es gibt keinen Hinweis in dem, was Sie schreiben, dass Sie irgendetwas falsch machen: Wenn die ursprüngliche Zeichenkette ein nicht-brechendes Leerzeichen zwischen "Foo" und "Bar" hatte, haben Sie stattdessen dort einen normalen Platz. Dies setzt voraus, dass Sie Ihre Eingabezeichenfolge (die ich mir als Bytezeichenfolge vorstelle, es sei denn, Sie befinden sich in Python 3 oder file wurde mit der Funktion aus dem Codecsmodul geöffnet) in eine Unicode-Zeichenfolge umgewandelt haben, sonst sind Sie unwahrscheinlich um ein Unicode-Zeichen in einer Nicht-Unicode-Zeichenfolge von Bytes für die Zwecke des replace . Dennoch gibt es keine eindeutigen Hinweise auf Probleme in dem, was Sie schreiben.

Kannst du repr(myString) , was die Eingabe ist (print repr(myString) kurz vor dem Ersetzen) und was ist die Ausgabe (print repr(myString) gleich nach dem Ersetzen) und warum denkst du, dass das ein Problem ist? Ohne den repr könnten Strings, die eigentlich anders sind, gleich aussehen , aber repr hilft da.




Related