string split to array

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
ButterflyEffect
User
Beiträge: 11
Registriert: Freitag 17. Oktober 2008, 16:13

Freitag 31. Oktober 2008, 11:44

Hallo zusammen
Ich lese aus einem file daten und möchte diese nun schön darstellen...
ich habe es geschafft die daten einzulesen und normal darzustellen...
mein Problem ist nun.. wie kann ich das erweitern/ändern damit ich von diesem string die einzelnen Fragmente aufrufen kann?
(die eingelesenen Daten sehen im file so aus:
abcd:efg:hijk:lmn:op:qrstu:vwx:yz)

Code: Alles auswählen

    linearray = []
    for line in open(ourFileName ,'r').readlines():
        linearray.append(line)       
	result = len(linearray)
	j = 0
   	string = linearray[j]
    print string.split(":")
danke

Edit by Gerold: Code-Tags "code=py" statt Quote-Tags gesetzt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Freitag 31. Oktober 2008, 12:01

ButterflyEffect hat geschrieben:wie kann ich das erweitern/ändern damit ich von diesem string die einzelnen Fragmente aufrufen kann?
Hallo ButterflyEffect!

Eine Möglichkeit:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

my_filename = "dateiname.txt"
datalist = []
for line in open(my_filename ,'rU'):
    line = line.rstrip()
    if line:
        data = line.split(":")
        datalist.append(data)

print datalist[0][0]
print

for linedata in datalist:
    print repr(linedata)
    for dataitem in linedata:
        print repr(dataitem),
    print
    print
mfg
Gerold
:-)

PS: http://paste.pocoo.org/show/89658/

.
Zuletzt geändert von gerold am Freitag 31. Oktober 2008, 12:43, insgesamt 2-mal geändert.
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Freitag 31. Oktober 2008, 12:11

ich würde es so machen:

Code: Alles auswählen

import csv

csv.register_dialect('foo', delimiter=':', quoting=csv.QUOTE_NONE)

raw_data = csv.reader(open("DATEINAME", "rb"), 'foo')

data = []
for line in raw_data:
    data.append(line)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 31. Oktober 2008, 12:20

Und den lesenden Teil mal mit `with` und einem Generator:

Code: Alles auswählen

from __future__ import with_statement

# Fake-Konstante
MY_FILENAME = 'dateiname.txt'

def parse_file(filename, delim=':')
    with open(filename, 'rU') as f:
        for line in f:
            # Hier strippen, um Reihen mit
            # Whitespace zu überspringen.
            line = line.rstrip()
            if line:
                yield line.split(delim)

datalist = list(parse_file(MY_FILENAME))
Alternativ bietet sich wohl auch das `csv`-Modul mit einem anderen Delimiter an.
Edit: Oh, da war .robert schneller und hat auch ein Beispiel geschrieben.
Mein Ersatzvorschlag für die letzten drei Zeilen:

Code: Alles auswählen

data = tupel(raw_data)
# Oder ``list()``, wenn man die Daten noch
# verschieben, ergänzen o.ä. will.
ButterflyEffect
User
Beiträge: 11
Registriert: Freitag 17. Oktober 2008, 16:13

Freitag 31. Oktober 2008, 12:24

och doofbin :P das wär ja logisch gewesen...
danke :D jetzt läufts
Antworten