ich habe folgendes Problem. Das Trennzeichen einer CSV-Datei kann nicht geändert werden und ist leider in den "Datensätzen" teilweise enthalten. Das sorgt beim öffnen der "Import.csv" per Excel dafür, dass es zu Verschiebung einzelnen Datensätze kommt. Es werden nur die Zeilen aus der "Import.csv" mit dem Anfang "NUMMER" und "1" benötigt.
Rohdaten: "Import.csv":
Code: Alles auswählen
Datum; 18.01.2023
Info; 19.98
NUMMER;KUNDENIDENT;KUNDENBEZEICHNUNG;
"1";="0815";="MC Donald's";
"1";="0816";="MC Donald's; Berlin";
"1";="0817";="MC Donald's Bayern";
Pythonscript "Rohdaten aufbereiten.py"
Code: Alles auswählen
importdatei = "Import.csv"
startstrings = ('"1"', "NUMMER") # Suchstring für Start der Zeilen
# Daten aus Datei einlesen
handle = open(importdatei, "r") # Datei im Lesemodus öffnen
inhalt = handle.readlines() # Text ist zeilenweise in der Liste "inhalt"
handle.close() # Datei schliessen
# Daten aus Datei einlesen
zeilennummer = 1
for line in inhalt: # Start der Schleife für die Zielenzählung
if line.startswith(startstrings) == True: # Die "startstrings" muss erfolgreich gefunden werden.
print (line) # Ausgabe der Zeile
zeilennummer = zeilennummer + 1 # nächste Zeile
Meine Idee war, dass zunächst das Semikolon zwischen einem v.l.n.r. ungerade Anzahl vorkommenden Anführungszeichen und dem nächsten folgenden gerade Anzahl vorkommenden Anführungszeichen entfernt wird. Jedoch nicht zwischen einer geraden Anzahl vorkommenden Anführungszeichen und dem nächsten folgenden ungerade Anzahl vorkommenden Anführungszeichen entfernt wird.
Eine Vorbedingung hierfür könnte auch sein: Kopfzeile: "line().count(";") = aktuelle Zeile: "line().count(";")"
- wahr --> nächster Schleifenschritt
- falsch --> entferne das Semikolon zwischen ungeraden und geraden Anführungszeichen
Code: Alles auswählen
line.rstrip()) # rstrip() entfernt am Ende '\r', '\n' bzw. ' '
Code: Alles auswählen
NUMMER;KUNDENIDENT;KUNDENBEZEICHNUNG;
"1";="0815";="MC Donald&aposs";
"1";="0816";="MC Donald's Berlin";
"1";="0817";="MC Donald's Bayern";
Code: Alles auswählen
NUMMER;KUNDENIDENT;KUNDENBEZEICHNUNG;
1;0815;MC Donald&aposs;
1;0816;MC Donald's Berlin;
1;0817;MC Donald's Bayern;
- Wie bekomme ich die Entfernten des Semikolon zwischen ungeraden und geraden Anführungszeichen hin?
- Welche "Funktion" läuft eine Zeichenkette durch?
- Wie kann ich die "bereinigten" Rohdaten in eine Datei ausgeben?