Seite 1 von 1

string split to array

Verfasst: Freitag 31. Oktober 2008, 11:44
von ButterflyEffect
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.

Re: string split to array

Verfasst: Freitag 31. Oktober 2008, 12:01
von gerold
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/

.

Verfasst: Freitag 31. Oktober 2008, 12:11
von .robert
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)

Re: string split to array

Verfasst: Freitag 31. Oktober 2008, 12:20
von Y0Gi
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.

Verfasst: Freitag 31. Oktober 2008, 12:24
von ButterflyEffect
och doofbin :P das wär ja logisch gewesen...
danke :D jetzt läufts