Satzzeichen aus Python-Liste entfernen
-
Die Konstante
string.punctuation
in Python -
Entfernen Sie Satzzeichen aus einer Liste mit
for
-Schleifen in Python - Entfernen von Interpunktionszeichen aus einer Liste mit List Comprehensions in Python
-
Entfernen von Interpunktionszeichen aus einer Liste mit der Funktion
str.translate()
in Python
Dieses Tutorial stellt die String-Konstante string.punctuation
vor und diskutiert einige Methoden zum Entfernen von Satzzeichen aus einer Liste von Strings in Python.
Die Konstante string.punctuation
in Python
string.punctuation
ist ein vorinitialisierter String in Python, der alle Satzzeichen enthält. Um diesen String zu verwenden, müssen wir das Modul string
importieren. Die Konstante string.punctuation
wird im folgenden Codierungsbeispiel gezeigt.
import string
print(string.punctuation)
Ausgabe:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Wir haben das Modul string
importiert und den Wert der Konstanten string.punctuation
angezeigt. Die Ausgabe zeigt alle möglichen Satzzeichen in englischer Sprache.
Entfernen Sie Satzzeichen aus einer Liste mit for
-Schleifen in Python
Wir können alle Satzzeichen aus einer Liste von Strings entfernen, indem wir die string.punctuation
mit for
-Schleifen in Python verwenden. Das folgende Codebeispiel veranschaulicht dieses Phänomen.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
new_words = []
for word in words:
for letter in word:
if letter in string.punctuation:
word = word.replace(letter, "")
new_words.append(word)
print(new_words)
Ausgabe:
['hello', 'Hi', 'bye bye', 'good bye', '']
Wir haben eine Liste von Strings words
initialisiert, die Satzzeichen enthält. Wir haben dann eine verschachtelte Schleife erstellt, die jedes Zeichen in jeder Zeichenkette der Wörter
-Liste durchläuft. Die äußere for
-Schleife durchläuft jeden String innerhalb der Liste, und die innere for
-Schleife durchläuft jeden Buchstaben
dieses Strings. Wir haben dann mit der Anweisung if
überprüft, ob dieser letter
innerhalb der string.punctuation
-Konstante ist. Wenn der Buchstabe in der Konstante string.punctuation
vorhanden ist, entfernen wir ihn, indem wir ihn durch einen leeren String ersetzen. Nachdem wir alle Satzzeichen aus einer Zeichenkette entfernt haben, fügen wir diese Zeichenkette in unsere new_words
-Liste ein. Am Ende haben wir die Liste new_words
gedruckt.
Das einzige Problem bei dieser Implementierung besteht darin, dass leere Zeichenketten in der endgültigen Liste verbleiben können. Abhängig von unseren Anforderungen können wir die leeren Strings auch aus der ursprünglichen Liste entfernen, indem wir einen zusätzlichen Haken in unseren Schleifen platzieren. Der folgende Codeausschnitt zeigt, wie auch leere Zeichenketten aus der Liste entfernt werden.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
new_words = []
for word in words:
if word == "":
words.remove(word)
else:
for letter in word:
if letter in string.punctuation:
word = word.replace(letter, "")
new_words.append(word)
print(new_words)
Ausgabe:
['hello', 'Hi', 'bye bye', 'good bye']
Dieses Mal hat unser Code auch alle leeren Zeichenketten aus der ursprünglichen Zeichenkette entfernt.
Entfernen von Interpunktionszeichen aus einer Liste mit List Comprehensions in Python
Das einzige Problem mit dem vorherigen Ansatz besteht darin, dass er zu viel Code erfordert, um nur Satzzeichen aus einer Liste von Zeichenketten zu entfernen. List Comprehensionse sind eine Möglichkeit, verschiedene Rechenoperationen an Listenelementen durchzuführen. Wir können for
-Schleifen und if
-Anweisungen innerhalb von List Comprehensions verwenden. Der Hauptvorteil der Verwendung von List Comprehensions besteht darin, dass sie weniger Code benötigen und im Allgemeinen schneller sind als eine einfache for
-Schleife. Wir können List Comprehensionse mit der String-Konstante string.punctuation
verwenden, um Satzzeichen aus einer Liste von Strings in Python zu entfernen. Das folgende Codebeispiel zeigt uns, wie Sie Satzzeichen aus einer Liste mit List Comprehension entfernen.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
words = [
"".join(letter for letter in word if letter not in string.punctuation)
for word in words
]
print(words)
Ausgabe:
['hello', 'Hi', 'bye bye', 'good bye', '']
Ich bin ganz ehrlich, es ist ein wenig schwer, den obigen Code zu verstehen, aber er ist überhaupt nicht komplex. Es verwendet einfach ein verschachteltes List Comprehension. Der innere Teil des Codes prüft, ob jeder Buchstabe innerhalb eines einzelnen Wortes in der Konstante string.punctuation
vorhanden ist und gibt nur die Buchstaben zurück, die nicht in string.punctuation
enthalten sind. Die Funktion str.join()
, die diesen Teil des Codes einschließt, verbindet alle zurückgegebenen Buchstaben mit einem leeren String und liefert uns ein vollständiges Wort ohne Satzzeichen. Der äußere Teil führt dieses innere List Comprehension für jedes Wort in unserer words
-Liste aus. Die vom äußeren List Comprehension zurückgegebenen Wörter speichern wir in der Liste words
. Am Ende zeigen wir alle Elemente der Liste words
an.
Ein weiterer Vorteil der Verwendung von List Comprehensions besteht darin, dass wir Speicherplatz im RAM sparen, d. h. wir haben im gesamten Code die ursprüngliche Liste aktualisiert, anstatt eine neue Liste zum Speichern der Ergebnisse zu erstellen. Wir können auch leere Strings aus der ursprünglichen Liste entfernen, indem wir eine zusätzliche if
-Anweisung in das äußere List Comprehension einfügen.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
words = [
"".join(letter for letter in word if letter not in string.punctuation)
for word in words
if word
]
print(words)
Ausgabe:
['hello', 'Hi', 'bye bye', 'good bye']
Dieses Mal führt unser äußeres List Comprehension das innere List Comprehension nicht aus, wenn das Wort kein Element enthält. Bei diesem Ansatz erhalten wir keinen leeren String in der resultierenden Liste von Strings.
Entfernen von Interpunktionszeichen aus einer Liste mit der Funktion str.translate()
in Python
Unsere vorherige Implementierung ist gut, da sie weniger Code erfordert und schneller ist als die Verwendung herkömmlicher Schleifen, aber sie kann besser sein. Obwohl es weniger Code ist, ist der Code etwas komplex. Der schnellste und effizienteste Weg, um Satzzeichen aus einer Liste von Strings in Python zu entfernen, ist die Funktion str.translate()
. Es erfordert weniger Code als das List Comprehension und ist viel schneller. Die str.translate()
-Funktion bildet jedes Zeichen innerhalb eines Strings gemäß einer Übersetzungstabelle ab. In unserem Fall werden alle Buchstaben in string.punctuation
einem leeren String zugeordnet. Das folgende Codebeispiel zeigt uns, wie Sie mit der Funktion str.translate()
Satzzeichen aus einer Liste entfernen.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
words = [word.translate(string.punctuation) for word in words]
print(words)
Ausgabe:
["hell'o", 'Hi,', 'bye bye', 'good bye', '']
Wir haben die Funktion str.translate()
mit der Konstante string.punctuation
und List Comprehension verwendet, um Satzzeichen aus unserer words
-Liste zu entfernen. Das word.translate(string.punctuation)
bildet jeden Buchstaben in der string.punctuation
-Konstante auf einen leeren String ab, und das List Comprehension führt diesen Code für jeden String in der words
-Liste aus und gibt die Ergebnisse zurück. Wir weisen alle zurückgegebenen Strings der Liste Wörter
zu und zeigen die Ausgabe an.
Die Ausgabe zeigt eine leere Zeichenkette in den Ergebnissen. Um diesen leeren String weiter zu entfernen, müssen wir eine zusätzliche Bedingung in unser List Comprehension einfügen.
import string
words = ["hell'o", "Hi,", "bye bye", "good bye", ""]
words = [word.translate(string.punctuation) for word in words if word]
print(words)
Ausgabe:
["hell'o", 'Hi,', 'bye bye', 'good bye']
Wir haben den leeren String aus dem vorherigen Ergebnis mit nur einer weiteren Bedingung entfernt.
Die string.punctuation
ist ein vordefinierter konstanter String, der alle möglichen Satzzeichen enthält. Mehrere Methoden verwenden diese String-Konstante, um Satzzeichen aus einer Liste von Strings zu entfernen, aber die einfachste, schnellste und effizienteste Implementierung ist die Verwendung der Funktion str.translate()
mit List Comprehension.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedInVerwandter Artikel - Python List
- Alle Vorkommen eines Elements aus einer Liste in Python entfernen
- Konvertieren eines Dictionaries in eine Liste in Python
- Duplikate aus Liste entfernen in Python
- Wie erhält man den Durchschnitt einer Liste in Python
- Was ist der Unterschied zwischen den Listenmethoden append und extend
- Wie man eine Liste in Python in eine Zeichenkette konvertiert
Verwandter Artikel - Python String
- Entfernen Kommas aus String in Python
- Wie man prüft, ob eine Zeichenkette auf pythonische Weise leer ist
- Konvertieren einer Zeichenkette in einen Variablennamen in Python
- Wie man Leerzeichen in einem String in Python entfernt
- Wie man in Python Zahlen aus einer Zeichenkette extrahiert
- Wie man in Python String in datetime konvertiert