TXT File mit Semikolontrennung einlesen

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
djnforce
User
Beiträge: 14
Registriert: Donnerstag 4. Juni 2015, 08:44

Hallo zusammen,

ich habe ein *.txt file, welches ungefähr so aufgebaut ist:

Entry11; Entry12; Entry13
Entry21; Entry22; Entry 23
Entry31; Entry32; Entry33

Wie kann ich diese Datei nun so einlesen, dass ich später die einzelnen Einträge in einer anderen Datei beliebig anordnen kann?
Was ich also benötige ist, wie kann ich beispielsweise auf den String "Entry22" zugrerifen`?

Ich dachte bereits an ein array. Aber da kann ich nur Zeilenweise einlesen und dann auch problemlos jede Zeile ansprechen.

Code: Alles auswählen

with open("test.txt", 'r') as f:
	reader = csv.reader(f)
	for row in reader:
		print(row)
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst die Daten halt in eine geeignete Datenstruktur einlesen. ZB eine Liste.
djnforce
User
Beiträge: 14
Registriert: Donnerstag 4. Juni 2015, 08:44

Okay, hab ich gemacht:

Code: Alles auswählen

with open("test/Debitor.txt", 'r') as f:
	reader = csv.reader(f)
	your_list = list(reader)

print(your_list)
aber wie spreche ich nun zb. den 5 Eintrag in der 3. Zeile an?

mit

Code: Alles auswählen

print(your_list[3])

bekomme ich ja auch nur wieder die ganze Zeile.
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Durch doppelte Indizierung, erst die Zeile, dann die Spalte

Code: Alles auswählen

your_list[zeile][spalte]
djnforce
User
Beiträge: 14
Registriert: Donnerstag 4. Juni 2015, 08:44

mhhh. Das einzige was funktioniert ist

Code: Alles auswählen

your_list[0][0]
oder

Code: Alles auswählen

your_list[1][0]
....

Ich komm einfach nicht an die Spalten :-(

Sobald ich die Spalte auf 1 oder 2 setze, bekomme ich einen "out of range" error.
Benutzeravatar
__blackjack__
User
Beiträge: 12984
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@djnforce: Du hast da ja auch nur eine Spalte in der Datei wenn Du dem `reader()` nicht sagst dass das Semikolon Spalten trennt und nicht das Komma.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
djnforce
User
Beiträge: 14
Registriert: Donnerstag 4. Juni 2015, 08:44

Danke sehr.

Die Lösung ist demnach

Code: Alles auswählen

reader = csv.reader(f, delimiter=';')
Antworten