Seite 1 von 1

String in Byte teilen

Verfasst: Mittwoch 30. August 2006, 14:16
von Craven
Hi

Weiß jemand wie ich einen string in zb. 32 byte Teile teilen kann und die dann in eine liste speichern kann, oder noch besser immer 32 byte von einem string einlesen wie bei

Code: Alles auswählen

asd = file("asd.asd", "r")
while 1:
    asd.read(32)
Ich hoffe das geht so einfach :wink:

MfG,
Craven

Verfasst: Mittwoch 30. August 2006, 15:19
von Gromit
Und ein weiterers Kaptiel von "Gromit liest aus dem Python-Manual":

read( [size])
Read at most size bytes from the file (less if the read hits EOF before obtaining size bytes).
Quelle:
http://docs.python.org/lib/bltin-file-o ... ml#l2h-242[/quote]

Verfasst: Mittwoch 30. August 2006, 15:41
von Craven
Ähm read ist doch genau das was ich oben geschrieben hab.
Ich wollte fragen ob sowas in der art auch mit nem string geht

MfG,
Craven

Verfasst: Mittwoch 30. August 2006, 15:59
von rayo
Hi

Schau dir mal das Modul StringIO an. Da kannst du ein String genau wie eine Datei ansprechen.

Gruss

Verfasst: Mittwoch 30. August 2006, 16:04
von Craven
Ah danke das klingt super, ich werds mir gleich mal anschaun.

MfG,
Craven

Verfasst: Mittwoch 30. August 2006, 16:19
von Joghurt
Oder auch

Code: Alles auswählen

>>> S = "abc bla bla bla foo bar baz" * 100
>>> l = [ S[i:i+32] for i in xrange(0, len(S), 32) ]
>>> l
['abc bla bla bla foo bar bazabc b',
 'la bla bla foo bar bazabc bla bl',
 'a bla foo bar bazabc bla bla bla',
 ' foo bar bazabc bla bla bla foo ',
...
>>> # oder auch als iterator:
>>> it = ( S[i:i+32] for i in xrange(0, len(S), 32) )
>>> for s in it:
...  print s
abc bla bla bla foo bar bazabc b
la bla bla foo bar bazabc bla bl
a bla foo bar bazabc bla bla bla
 foo bar bazabc bla bla bla foo
...

Re: String in Byte teilen

Verfasst: Mittwoch 30. August 2006, 16:23
von gerold
Craven hat geschrieben:noch besser immer 32 byte von einem string einlesen
[...]
Ich hoffe das geht so einfach
Hi Craven!

Das sollte so einfach funktioniere:

Code: Alles auswählen

my_list = []
f = file("dateiname", "rb")
try:
    while True:
        part = f.read(32)
        if part == "":
            break
        my_list.append(part)
finally:
    f.close()
Wie der Text in der Textdatei aufgebaut ist und was du mit den Zeilenumbrüchen machst, weiß ich allerdings nicht. --> zu wenig Infos von dir.

lg
Gerold
:-)

Verfasst: Mittwoch 30. August 2006, 16:38
von Craven
Hi

danke für die antworten. Hat mit StringIO funktioniert.

@ Gerold:
Ich wollte einen string an sich ansprechen, also keine Datei.

MfG,
Craven