Textbearbeitung und Schleife (?)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
GotLost
User
Beiträge: 3
Registriert: Samstag 2. April 2022, 11:42

Hallo zusammen,

ich bin, was das Programmieren ansich angeht, ein Neuling und somit auch in Python einer ... Sorry, wenn die Frage/n doof sind, aber ich habe dafür noch kein Verständnis aufgebaut.

Ich habe einen Excel-Datensatz mit 4 Variablen (die Inhalte sind fiktiv von mir erstellt, der "echte" Datensatz enthält mehr als 20.000 Zeilen und auch mehr als 4 Variablen).

ID NACHNAME VORNAME GEBURTSDATUM ANMERKUNGEN
55555 Meier Kurt 04.10.1950 Interne Notiz - sonntags ist das Wetter gut, sollte aber nicht sein. "Doofes Fernsehen" // "unschönes Fernsehen". 08 weiteres+sonstiges
66666 Hubert Erik 30.05.1945 Interne Notiz - 15.03.22: HP Weihnachtsgruß+Erdbeerentrüffel2022 verschickt/sp
77777 Müller Gertrude 20.01.1992 "Interne Notiz - kalender2010 erhalten+kaffee;14.12.2021 Interne Notiz - ""Augenjäger"" von S.F. + Dankeskarte"
88888 Schmitt Hermine 08.09.1976 Interne Notiz - /W9510gesch/W103gesch./W55gesch, Torte+(03/22, im)
99999 Schmiedt Herribert 30.07.1935

Aus der Variable "ANMERKUNGEN" möchte ich folgendes entfernen: .,0123456789:!?/\(-)

Nun dazu einige Fragen:
1. Wenn ich die erste Anmerkung testweise versuche zu bereinigen :

Code: Alles auswählen

string = "Interne Notiz - sonntags ist das Wetter gut, sollte aber nicht sein. "Doofes Fernsehen" // "unschönes Fernsehen". 08 weiteres+sonstiges"
characters = '.,0123456789:!?/\(-)'

for x in range(len(characters)):
    string = string.replace(characters[x],"")

print(string)

-> bekomme ich eine Fehlermeldung "invalid syntax", weil ich ja im String mehrere Anfürhungszeichen habe, die dann als Ende vom String interpretiert werden, obwohl sie ja noch zur Anmerkung gehört.
Wie kann ich das lösen? Ich kann den Datensatz leider nicht manuell bearbeiten, da ich ja sehr, sehr viele Zeilen habe.

2. Wie kann ich das Bereingen von Zahlen, Kommata etc. (eben: .,0123456789:!?/\(-)) auf allen Zeilen anwenden - nicht nur testweise für eine Zeile? Ich denke, ich brauche eine Schleife, die Zeile für Zeile durchgeht, oder? Wie mach´ ich das denn? :roll:

3. Wie kann ich die Zeile 5 (Schmiedt Herribert) entfernen, da in der Anmerkung NaN ist? Also kann ich sagen, dass ich die Zeilen löschen möchte, bei denen die Variable "Anmerkung" NaN ist?


Ich hoffe, dass meine Beschreibung nachvollziehbar ist. Leider habe ich kein anderes, thematisch passendes Thema gefunden, sodass ich meine Fragen dort hätte platzieren können.

Vielen Dank schon einmal für Eure Antworten.
Üpsilon
User
Beiträge: 225
Registriert: Samstag 15. September 2012, 19:23

-> bekomme ich eine Fehlermeldung "invalid syntax", weil ich ja im String mehrere Anfürhungszeichen habe, die dann als Ende vom String interpretiert werden, obwohl sie ja noch zur Anmerkung gehört.
Na ja, das einfachste wäre wohl, dreifache Anführungszeichen zu verwenden:

Code: Alles auswählen

string = """Interne Notiz - sonntags ist das Wetter gut, sollte aber nicht sein. "Doofes Fernsehen" // "unschönes Fernsehen". 08 weiteres+sonstiges"""
Aber verstehe ich die Frage richtig, dass du die Excel-Datei in den Programmcode reinkopierst?
Das Problem hätte man gar nicht, wenn man die Excel-Datei, na ja, mittels einer dafür vorgesehenen Bibliothek öffnet. Das geht beispielsweise mit Pandas: https://pandas.pydata.org/pandas-docs/s ... excel.html . Wobei das das ganze natürlich "komplizierter" macht, da man sich dann mit Pandas befassen muss...
GotLost
User
Beiträge: 3
Registriert: Samstag 2. April 2022, 11:42

Hallo Üpsilon,

danke für Dein Feedback - nein, nein, ich lese die Excel Datei schon vorher über pandas ein.

Code: Alles auswählen

kunde = pd.read_excel("C:/Users/user/Documents/user/export_kunde.xls",
                         header=0)

Ich hatte die erste Anmerkung einfach mal kopieren wollen um zusehen, ob es denn prinzipiell so funktionieren kann.

Das heißt, ich müsste alle Anmerkungen mit weiteren Anführungszeichen versehen - wie mach ich das, dass ich das über alle Zeilen hinweg in meinem Datensatz bekomme?


Viele Grüße & danke.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Das mit den Anführungszeichen ist nur relevant, wenn die Strings im Code stehen.
Pandas hat Funktionen zum Bearbeiten von Strings.

Code: Alles auswählen

kunde.ANMERKUNGEN.str.replace("[-0-9.,:!?/()]", "")
Erster Schritt sollte das Durcharbeiten des Pandas-Tutorials sein, wo solche Dinge erklärt werden.
GotLost
User
Beiträge: 3
Registriert: Samstag 2. April 2022, 11:42

Danke für Eure Rückmeldungen.
Antworten