Entfernen von \u2018 und \u2019 Zeichen

Lesezeit: 2 Minuten

Bhaveshs Benutzeravatar
bhavesh

Ich verwende Beautiful Soup, um Webseiten zu analysieren und den Namen der besuchten Webseiten auf dem Terminal auszugeben. Allerdings enthält der Name der Webseite häufig ein einzelnes Linkszeichen (\u2018) und rechts (\u2019) Zeichen, das Python nicht drucken kann, da es einen Charmap-Kodierungsfehler verursacht.

Gibt es eine Möglichkeit, diese Zeichen zu entfernen?

  • Bitte fügen Sie einen Teil Ihres Codes sowie Ihre Ausgabe und die erwartete Ausgabe hinzu. Es wird gut sein, bessere Lösungen zu zeichnen

    – sundar nataraj

    23. Juni 2014 um 4:46

  • Hinweis: U+2018 = Linkes einfaches Anführungszeichen, U+2019 = Rechtes einfaches Anführungszeichen

    – Marjorie Roswell

    19. Juni 2017 um 5:27


  • sys.stdout = io.TextIOWrapper(sys.stdout.buffer, binding=”UTF-8″) ist hilfreich, um Kodierungsfehler von vornherein zu vermeiden.

    – Yiğit

    23. April 2020 um 21:34 Uhr


Benutzer-Avatar von Martin Konecny
Martin Konecny

Diese Codes sind Unicode für die einzelnen linken und rechten Anführungszeichen. Sie können sie durch ihr ASCII-Äquivalent ersetzen, das Python problemlos auf Ihrem System drucken sollte:

>>> print u"\u2018Hi\u2019"
‘Hi’
>>> print u"\u2018Hi\u2019".replace(u"\u2018", "'").replace(u"\u2019", "'")
'Hi'

Alternativ mit Regex:

import re
s = u"\u2018Hi\u2019"
>>> print re.sub(u"(\u2018|\u2019)", "'", s)
'Hi'

Allerdings sollte Python auch keine Probleme damit haben, die Unicode-Version davon zu drucken. Es ist möglich, dass Sie verwenden str() irgendwo, wo versucht wird, Ihren Unicode in ASCII zu konvertieren und Ihre Ausnahme auszulösen.

Da einzelne Zeichen (\u2018 Und \u2019) muss ersetzt werden, str.translate() Könnte auch verwendet werden.

s = "\u2018Hi\u2019"
s_new = s.translate(str.maketrans({'\u2018': "'", '\u2019': "'"}))

# or even use the unicode characters themselves
s_new = s.translate(str.maketrans({'‘': "'", '’': "'"}))
print(s_new)   # 'Hi'

Oder geben Sie beim Parsen zunächst die Codierung an.

# if parsing an html
soup = BeautifulSoup(html, from_encoding='utf-8')

# if reading a file
with open("text.txt", encoding='utf-8') as f:
     f.read()

1453640cookie-checkEntfernen von \u2018 und \u2019 Zeichen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy