Strings nach Länge zerteilen

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.
BlackJack

Donnerstag 17. Juli 2008, 14:05

@audax: Ja `compose()` wäre nett. :-)

@da.dom: Also ich find's nicht gruselig, sondern elegant. Funktionale Programmierung rockt! :-)
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Mittwoch 13. August 2008, 14:42

audax hat geschrieben:
ete hat geschrieben:Hallo!

Kann man auch mehrere strings syncron teilen?

a = 20 * 'a'
b = 20 * 'b'

Das ganze soll dann so aussehen:
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb

Code: Alles auswählen

from itertools import izip

def split(s, size):
    return (s[i:i+size] for i in  xrange(0,len(s),size))

a= 'a'*50
b = 'b'*50

print [a+b for a,b in izip(split(a, 7), split(b, 7))]
['aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'ab']
Du hättest übrigens ruhig einen neuen Thread öffnen können anstatt die Leiche hervorzukramen.
Funktioniert das auch wenn a aus meheren teil strings besteht, also

a = [20 * 'a', 20 * x]
b = 20 * 'b'

wobei es dann so gesplittet werden soll:
aaaaaaaaa
xxxxxxxxx
bbbbbbbbb
aaaaaaaaa
xxxxxxxxx
bbbbbbbbb
http://www.snowflake-sl.info/index.html
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Mittwoch 13. August 2008, 20:59

Drück dich mal bitte genauer aus.

Wie willst du denn

Code: Alles auswählen

a = [20 * 'a', 20 * x]
b = 20 * 'b' 
gemeinsam splitten? Oo
Das eine ist eine Liste mit 2 Elementen, das andere ein String oO
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Donnerstag 14. August 2008, 07:52

a = aaaaaaaaaaaaaaaaaaaa, xxxxxxxxxxxxxxxxxxx
b = bbbbbbbbbbbbbbbbbbb

Nach dem Splitten:

aaaaaaaaa
xxxxxxxxx
bbbbbbbbb
aaaaaaaaa
xxxxxxxxx
bbbbbbbbb

Edit:

Wobei es kein Tuple ist, wie ich gerade sehe:

liste3 = [[10, 11, 12, 15, 16, 17, 18, 19, 20, 21], [19, 20, 21, 22, 23], [20, 21, 22, 23, 24]]

for x in liste3:
print "".join(">" if y in x else "-" for y in range(30))

a = 50*'a'
b = 50*'b'

Soll ergeben:

30 mal a
30 mal b
30 mal alle strings von liste3
Rest von a (also 20)
Rest von b
Rest von allen strings von liste3
http://www.snowflake-sl.info/index.html
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Donnerstag 14. August 2008, 09:07

30 mal alle strings von liste3
Häh?
Das sind keine Strings sondern Listen von Zahlen Oo

Mach doch mal nen konkretes Beispiel, mit kompletten Angaben,[/code]
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Donnerstag 14. August 2008, 09:41

Code: Alles auswählen

liste3 = [[10, 11, 12, 15, 16, 17, 18, 19, 20, 21], [19, 20, 21, 22, 23], [20, 21, 22, 23, 24]]

for x in liste3:
    print "".join(">" if y in x else "-" for y in range(30))
ergibt:

---------->>>-->>>>>>>--------
------------------->>>>>------
-------------------->>>>>-----

zusätzlich gibt es noch 2 weiter strings:

string1 = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
string2 = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Es soll so gesplittet werden (nach 20 chars):

string1
string2
alle strings von liste3

aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
---------->>>-->>>>>
------------------->
--------------------
aaaaaaaaaa
bbbbbbbbbb
>>--------
>>>>------
>>>>>-----

Ich hoffe das war verständlich.
http://www.snowflake-sl.info/index.html
Antworten