384 Stimmen

So entfernen Sie \xa0 von String in Python?

Ich verwende derzeit Beautiful Soup zum Parsen einer HTML-Datei und rufe get_text() aber ich habe das Gefühl, dass ich mit einer Menge von \xa0 Unicode für Leerzeichen. Gibt es einen effizienten Weg, um alle von ihnen in Python 2.7 zu entfernen, und ändern Sie sie in Leerzeichen? Ich denke, die allgemeinere Frage wäre, gibt es eine Möglichkeit, Unicode-Formatierung zu entfernen?

Ich habe es versucht: line = line.replace(u'\xa0',' ') wie in einem anderen Thread vorgeschlagen, aber das änderte die \xa0 's zu u's, also habe ich jetzt überall "u "s stattdessen. ):

EDIT: Das Problem scheint behoben zu sein durch str.replace(u'\xa0', ' ').encode('utf-8') sondern einfach tun .encode('utf-8') ohne replace() scheint dazu zu führen, dass es noch seltsamere Zeichen ausspuckt, \xc2 zum Beispiel. Kann jemand das erklären?

17voto

Jonhy Beebop Punkte 1514

Python erkennt es wie ein Leerzeichen, so dass Sie split ohne Args und mit einem normalen Leerzeichen verbinden:

line = ' '.join(line.split())

15voto

Ich lief in dieses gleiche Problem einige Daten aus einer sqlite3-Datenbank mit Python ziehen. Die oben genannten Antworten funktionierten nicht für mich (nicht sicher, warum), aber dies tat: line = line.decode('ascii', 'ignore') Mein Ziel war jedoch das Löschen der \xa0s anstatt sie durch Leerzeichen zu ersetzen.

Ich habe das von dieses sehr hilfreiche Unicode-Tutorial von Ned Batchelder.

13voto

shiva Punkte 419

Versuchen Sie diesen Code

import re
re.sub(r'[^\x00-\x7F]+','','paste your string here').decode('utf-8','ignore').strip()

11voto

8bitjunkie Punkte 12117

Es ist das Äquivalent eines Leerzeichens, also entfernen Sie es

print(string.strip()) # no more xa0

9voto

andilabs Punkte 20478

Ich bin hier gelandet, als ich nach dem Problem mit nicht druckbaren Zeichen gegoogelt habe. Ich verwende MySQL UTF-8 general_ci und mit der polnischen Sprache umgehen. Bei problematischen Zeichenfolgen muss ich wie folgt vorgehen:

text=text.replace('\xc2\xa0', ' ')

Es ist nur ein schneller Workaround und Sie sollten wahrscheinlich etwas mit der richtigen Kodierungseinstellung versuchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X