Heim >Backend-Entwicklung >Python-Tutorial >Wie entferne ich selektiv Nicht-ASCII-Zeichen unter Beibehaltung von Leerzeichen und Punkten?

Wie entferne ich selektiv Nicht-ASCII-Zeichen unter Beibehaltung von Leerzeichen und Punkten?

Linda Hamilton
Linda HamiltonOriginal
2024-10-19 20:32:02945Durchsuche

How to Selectively Remove Non-ASCII Characters Preserving Spaces and Periods?

Selektive Entfernung von Nicht-ASCII-Zeichen

Bei der Arbeit mit Textdaten ist es häufig erforderlich, Nicht-ASCII-Zeichen zu entfernen und gleichzeitig bestimmte Symbole beizubehalten wie Leerzeichen und Punkte. Während grundlegende Filtermethoden möglicherweise alle Nicht-ASCII-Zeichen entfernen, ist dies in manchen Fällen möglicherweise nicht wünschenswert.

Betrachten wir den folgenden Code:

<code class="python">def onlyascii(char):
    if ord(char) < 48 or ord(char) > 127: return ''
    else: return char</code>

Dieser Code entfernt alle Zeichen mit ASCII-Werten kleiner als 48 oder größer als 127, wodurch der Text effektiv von Nicht-ASCII-Zeichen befreit wird. Allerdings werden auch Leerzeichen (ASCII 32) und Punkte (ASCII 46) entfernt.

Um Nicht-ASCII-Zeichen selektiv zu entfernen und dabei Leerzeichen und Punkte beizubehalten, können wir das string.printable-Modul von Python nutzen:

<code class="python">import string
printable = set(string.printable)
filtered_data = filter(lambda x: x in printable, data)</code>

Der Satz string.printable enthält alle druckbaren Zeichen im System, einschließlich Ziffern, Buchstaben, Symbole, Leerzeichen und Punkte. Wenn wir diesen Satz als Filter verwenden, können wir alle nicht druckbaren Zeichen aus der Zeichenfolge entfernen.

Zum Beispiel, wenn wir die Zeichenfolge „somex00string. withx15 lustige Zeichen“ haben:

<code class="python">s = "some\x00string. with\x15 funny characters"
''.join(filter(lambda x: x in printable, s))</code>

Das Ergebnis wird sein:

'somestring. with funny characters'

Diese Methode entfernt effektiv Nicht-ASCII-Zeichen unter Beibehaltung von Leerzeichen und Punkten und stellt eine saubere Zeichenfolge für die weitere Verarbeitung bereit.

Das obige ist der detaillierte Inhalt vonWie entferne ich selektiv Nicht-ASCII-Zeichen unter Beibehaltung von Leerzeichen und Punkten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn