Die Python-Funktion ascii() ist eine eingebaute Funktion, die eine Zeichenkette so zurückgibt, dass nicht-ASCII-Zeichen durch Escape-Sequenzen dargestellt werden. Sie eignet sich besonders zur sicheren und eindeutigen Darstellung von Zeichen in Python, etwa bei der Ausgabe oder Protokollierung von Daten. Mit ihrer klaren Syntax unterstützt ascii() die Lesbarkeit und Nachvollziehbarkeit von Programmen, die mit unterschiedlichen Zeichencodierungen arbeiten.

Einführung

Die ascii() Funktion ist eine eingebaute Python-Funktion. Sie gehört zu den String-Repräsentationsfunktionen und arbeitet eng mit der repr() Funktion zusammen. Die Funktion ist besonders nützlich beim Debugging, bei der Datenverarbeitung mit verschiedenen Zeichensätzen und bei der Arbeit mit internationalen Texten.

Die ascii() Funktion gibt eine lesbare String-Repräsentation eines Objekts zurück, ähnlich wie repr(), jedoch mit einem wichtigen Unterschied: Alle nicht-ASCII-Zeichen werden durch entsprechende Escape-Sequenzen ersetzt.

Welches Problem löst diese Funktion?

  • Darstellung von Unicode-Zeichen: Ermöglicht die sichere Darstellung von Strings mit Sonderzeichen, Umlauten, Emojis etc. in ASCII-kompatibler Form.
  • Debugging: Hilft beim Debuggen von Code, der mit verschiedenen Zeichensätzen arbeitet.
  • Datenexport: Ermöglicht den sicheren Export von Daten in Systeme, die nur ASCII-Zeichen unterstützen.
  • Protokollierung: Sichere Speicherung von Log-Nachrichten mit Sonderzeichen.

Syntax

Python Syntax
ascii(object)
Parameter
object

Beliebiges Python-Objekt für das eine ASCII-kompatible String-Repräsentation erstellt werden soll.

Rückgabewert

Typ: str (String)

Eine ASCII-kompatible String-Repräsentation des übergebenen Objekts, wobei:

  • Alle ASCII-Zeichen (0-127) unverändert bleiben.
  • Nicht-ASCII-Zeichen durch Escape-Sequenzen ersetzt werden.
    • \xhh für Zeichen mit Werten 128-255
    • \uhhhh für Unicode-Zeichen mit 4-stelligen Hex-Werten
    • \Uhhhhhhhh für Unicode-Zeichen mit 8-stelligen Hex-Werten

Besonderheiten

Unterschied zu repr()

  • repr() gibt Unicode-Zeichen unverändert zurück
  • ascii() ersetzt alle nicht-ASCII-Zeichen durch Escape-Sequenzen

Verhalten bei verschiedenen Objekt-Typen

  • Strings: Direkte Konvertierung der Zeichen
  • Andere Objekte: Erst Aufruf von repr(), dann ASCII-Konvertierung
  • None: Gibt den String None zurück
  • Zahlen: Werden als ASCII-String dargestellt

Encoding Verhalten

  • Die Funktion arbeitet unabhängig vom System-Encoding
  • Ausgabe ist immer ASCII-kompatibel

Grundlegende Verwendung

Grundlegende String-Konvertierung

Da alle Zeichen im ASCII-Bereich liegen, bleibt der String in diesem Beispiel unverändert.

Python Beispiel
text_one = "Hello world"
print(ascii(text_one))
Output
'Hello world'

Deutsche Umlaute

Python Beispiel - Umlaute
text = "Schön und fröhlich"
print(ascii(text))
Output
'Sch\xf6n und fr\xf6hlich'

Unicode-Zeichen und Emojis

Python Beispiel - Unicode-Zeichen
text = "Python is 🚀"
print(ascii(text))
Output
'Python is \U0001f680'

Verschiedene Sprachen

Python Beispiel
# Kyrillisch
ru = "Привет мир"
print(ascii(ru))

# Chinesisch
ch = "你好世界"
print(ascii(ch))
Output
'\u041f\u0440\u0438\u0432\u0435\u0442 \u043c\u0438\u0440'
'\u4f60\u597d\u4e16\u754c'

Zahlen und andere Datentypen

Python Beispiel
# Zahlen
print(ascii(42))
print(ascii(3.14))

# Listen
print(ascii([1, 2, "Schön"]))

# Dictionaries
print(ascii({"name": "Jürgen", "age": 30}))
Output
42
3.14
[1, 2, 'Sch\xf6n']
{'name': 'J\xfcrgen', 'age': 30}

Praktische Anwendungsbeispiele

Sichere Protokollierung

Beispiel für eine sichere Protokollierung mit ASCII-Konvertierung.

Python Beispiel
import logging

def safe_log(msg):
    safe_msg = ascii(msg)
    print(f"Message: {safe_msg}")
    logging.info(f"Message: {safe_msg}")

user_input = "Benutzer schrieb: Schön! 👍"
safe_log(user_input)
Output
Message: 'Benutzer schrieb: Sch\xf6n! \U0001f44d'

Debugging von Unicode-Problemen

Python Beispiel - Debuggin
def debug_string(text):
    print(f"Original: {text}")
    print(f"repr(): {repr(text)}")
    print(f"ascii(): {ascii(text)}")
    print(f"Länge: {len(text)} Zeichen")

problematic_text = "Café naïve résumé"
debug_string(problematic_text)
Output
Original: Café naïve résumé
repr(): 'Café naïve résumé'
ascii(): 'Caf\xe9 na\xefve r\xe9sum\xe9'
Länge: 17 Zeichen

Datenexport für Legacy-Systeme

Python Beispiel
def export_for_legacy_system(data):
    ascii_data = []
    for item in data:
        if isinstance(item, str):
            ascii_data.append(ascii(item))
        else:
            ascii_data.append(str(item))

    return ascii_data

user_data = ["Müller", "François", "José", "Åse"]
legacy_safe_data = export_for_legacy_system(user_data)
print(legacy_safe_data)
Output
["'M\\xfcller'", "'Fran\\xe7ois'", "'Jos\\xe9'", "'\\xc5se'"]
/ Weiter

Zurück zu Builtin Functions

Zur Übersicht