Ich habe folgenden Code gefunden
import csv
with open("C:\Users\oldboy\Test.txt", "r") as f:
reader = csv.reader(exel)
your_list = list(reader)
print(your_list)
Zur Vorbereitung habe ich in Exel eine Tabelle geschrieben und sie als CSV Datei gespeichert. Da dieses Beispiel Test.txt als Ausgangsdatei verwendet habe ich die Datei mit note++ umgeändert auf Test.txt. Komischer weise moniert spyder das Komma
File <unknown>:8
with open("C:\Users\oldboy\Test.txt", "r") as f:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
CSV
Der gefundene Code ist offensichtlich kaputt... Writing Windows Paths in Python 3: A Guide to String Literals
___________________________________________________________________________________________________
https://www.python-kurs.eu/index.php
https://learnxinyminutes.com/docs/python/ https://learnxinyminutes.com/docs/de-de/python-de/
https://quickref.me/python | https://docs.python-guide.org/
- __blackjack__
- User
- Beiträge: 13572
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@oldboyJR: Es wird nicht wirklich das Komma moniert, sondern an der Stelle hat der Compiler aufgegeben weil dort *oder davor* der Fehler ist.
Falls das dort in Deinem Heimatverzeichnis liegt und es okay ist den Pfad nicht absolut, sondern relativ zum Heimatverzeichnis des Benutzers unter dem das ausgeführt wird, könnte man auch das mit `pathlib` auch so ausdrücken: ``Path.home() / "Test.txt"``.
Bei Textdateien sollte man immer die Kodierung mit angeben in der die Daten kodiert sind.
Für das `csv`-Modul muss man beim öffnen noch ``newline=""`` angeben. Siehe Dokumentation von dem Modul.
`f` ist, wie fast alle einbuchstabigen Namen, kein guter Name. Da ist `file` gemeint.
Was ist `exel`? Das wurde nirgends definiert.
`your_list` ist kein guter Name. Der sagt nichts über den Inhalt aus. `rows` wäre ein allgemeiner, passender Name an der Stelle.
Falls das dort in Deinem Heimatverzeichnis liegt und es okay ist den Pfad nicht absolut, sondern relativ zum Heimatverzeichnis des Benutzers unter dem das ausgeführt wird, könnte man auch das mit `pathlib` auch so ausdrücken: ``Path.home() / "Test.txt"``.
Bei Textdateien sollte man immer die Kodierung mit angeben in der die Daten kodiert sind.
Für das `csv`-Modul muss man beim öffnen noch ``newline=""`` angeben. Siehe Dokumentation von dem Modul.
`f` ist, wie fast alle einbuchstabigen Namen, kein guter Name. Da ist `file` gemeint.
Was ist `exel`? Das wurde nirgends definiert.
`your_list` ist kein guter Name. Der sagt nichts über den Inhalt aus. `rows` wäre ein allgemeiner, passender Name an der Stelle.
Code: Alles auswählen
#!/usr/bin/env python3
import csv
from pathlib import Path
def main():
path = Path.home() / "Test.txt"
with path.open("r", newline="", encoding="ASCII") as file:
rows = list(csv.reader(file))
print(rows)
if __name__ == "__main__":
main()
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Lehrbuch: Der Parameter csvfile muss eine Referenz auf ein für den Lesezugriff geöffnetes Dateiobjekt sein, aus dem die Daten gelesen werden sollen.
Mit dialect können Sie angeben, in welchem Format die zu lesende Datei geschrieben wurde. Dazu übergeben Sie einen String, der in der Liste enthalten ist, die csv.list_dialects zurückgibt. Alternativ geben Sie eine Instanz der Klasse Dialect an, die wir in Abschnitt 32.6.2 besprechen werden. Standardmäßig wird der Wert "excel" für dialect verwendet, wobei die damit codierten Dateien das Komma als Trennzeichen verwenden.
Sie können einen eigenen Dialekt auch direkt über Schlüsselwortargumente angeben, ohne den Umweg über die Dialect-Klasse zu nehmen. Ein Beispiel, bei dem wir auf diese Weise das Semikolon als Trennzeichen festlegen, sieht folgendermaßen aus:
with open("datei.csv") as f_csv: reader = csv.reader(f_csv, delimiter=";")
Mit dialect können Sie angeben, in welchem Format die zu lesende Datei geschrieben wurde. Dazu übergeben Sie einen String, der in der Liste enthalten ist, die csv.list_dialects zurückgibt. Alternativ geben Sie eine Instanz der Klasse Dialect an, die wir in Abschnitt 32.6.2 besprechen werden. Standardmäßig wird der Wert "excel" für dialect verwendet, wobei die damit codierten Dateien das Komma als Trennzeichen verwenden.
Sie können einen eigenen Dialekt auch direkt über Schlüsselwortargumente angeben, ohne den Umweg über die Dialect-Klasse zu nehmen. Ein Beispiel, bei dem wir auf diese Weise das Semikolon als Trennzeichen festlegen, sieht folgendermaßen aus:
with open("datei.csv") as f_csv: reader = csv.reader(f_csv, delimiter=";")
- __blackjack__
- User
- Beiträge: 13572
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@oldboyJR: Offenbar dieses Lehrbuch: https://openbook.rheinwerk-verlag.de/python/33_006.html
Die Beispieldaten dort enthalten Umlaute, die Datei wird aber ohne Angabe der Kodierung geöffnet. Und ohne ``newline=""``. Das ist also nicht wirklich gut an der Stelle, das Lehrbuch.
Die Beispieldaten dort enthalten Umlaute, die Datei wird aber ohne Angabe der Kodierung geöffnet. Und ohne ``newline=""``. Das ist also nicht wirklich gut an der Stelle, das Lehrbuch.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Danke Cathy Ladman das Buch Phython3 Von Johannes Ernesti und Peter Kaiser 7Auflage Rheinwerkverlag macht wohl immer die selben Fehler und hat das publizieren der Listings eingestellt.
Dein Listing war nicht ganz Problemlos. Natürlich habe ich im Buch nach Lösungen gesucht. Vergeblich!!! aber nach vielen Probieren und umschreiben deines Listings und Rückkehr dazu muß ich zum Schluss feststellen alles funktioniert aber nicht das encoding anstatt "ASCII" "utf 8" Gedruckt wurde mit ASCII nur [ ]
Dein Listing war nicht ganz Problemlos. Natürlich habe ich im Buch nach Lösungen gesucht. Vergeblich!!! aber nach vielen Probieren und umschreiben deines Listings und Rückkehr dazu muß ich zum Schluss feststellen alles funktioniert aber nicht das encoding anstatt "ASCII" "utf 8" Gedruckt wurde mit ASCII nur [ ]
Code: Alles auswählen
def main():
path = Path.home() / "NamenB.csv"
with path.open("r", newline="", encoding="utf 8") as file:
rows = list(csv.reader(file))
print(rows)
if __name__ == "__main__":
main()
- __blackjack__
- User
- Beiträge: 13572
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@oldboyJR: Zu dem Zeitpunkt kannte ich die Quelle ja noch nicht. Und mit Quellte hätte ich auch nur gewusst, das ASCII nicht ausreichen wird, aber nicht welche Kodierung die passende ist. Das musst letztendlich Du wissen.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
- DeaD_EyE
- User
- Beiträge: 1127
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Encodings bei Windows:
cp1252, latin1, utf8
Generell utf8 zu verwenden funktioniert unter Linux in 99% der Fälle fehlerfrei.
Unter Windows erlebe ich regelmäßig, dass diese 3 genannten Encodings vorkommen.
cp1252, latin1, utf8
Generell utf8 zu verwenden funktioniert unter Linux in 99% der Fälle fehlerfrei.
Unter Windows erlebe ich regelmäßig, dass diese 3 genannten Encodings vorkommen.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server