Seite 1 von 1

Text splitten

Verfasst: Donnerstag 29. Oktober 2009, 18:12
von microkernel
Hallo,
ich habe zurzeit folgendes Problem:
Ich habe eine liste von poitiven und negativen Zahlen. (wie zum Beispiel: [-4, + 9, -10, +17]) Nun suche ich nach einer eleganten Methode einen bestimmten Text auf die anzahl der nummern in der Liste zu teilen und dann jeweils zu einen Dict hinzuzufügen.
Das ganze sollte dann so aussehen:

Code: Alles auswählen

numbers = [-4, +9, -10, +17]
text = "Hello World."

splitt_text(text, numbers)
{-4: "Hel", +9 : "lo ", -10: "Wor", +17:"ld."}
Hat jemand von eine Idee, wie ich das anstellen könnte?


lg
microkernel

Verfasst: Donnerstag 29. Oktober 2009, 18:13
von SigMA

Code: Alles auswählen

>>> print "Hello World"[:2]
"He"
>>> print "Hello World"[:5]
"Hello"

Verfasst: Donnerstag 29. Oktober 2009, 18:14
von Hyperion
Gibt es einen Zusammenhang zwischen den Zahlen und den Wort-Schnipseln?

Wenn nein, nach wlecher Regel soll das Wort denn aufgeteilt werden?

Verfasst: Donnerstag 29. Oktober 2009, 18:24
von birkenfeld
SigMA hat geschrieben:

Code: Alles auswählen

>>> print "Hello World"[2]
"He"
>>> print "Hello World"[5]
"Hello"
Da fehlt jeweils ein Doppelpunkt im Subscript: [:2] und [:5] müsste es heißen.

Verfasst: Donnerstag 29. Oktober 2009, 18:30
von microkernel
@SigMA
SigMA hat geschrieben:

Code: Alles auswählen

>>> print "Hello World"[2]
"He"
>>> print "Hello World"[5]
"Hello"
Du meinst wohl:

Code: Alles auswählen

print "Hello World."[:2]
@Hyperion
nein

Verfasst: Donnerstag 29. Oktober 2009, 18:37
von numerix
microkernel hat geschrieben:@Hyperion
nein
Dann bliebe die Frage nach einer Regel für die Teilung des Textes ...

Für den Fall, das diese egal ist, wäre folgendes denkbar:

Code: Alles auswählen

>>> numbers = [-4,9,-10,17]
>>> text = "Hello World."
>>> d,r = divmod(len(text),len(numbers))
>>> d += (r>0)
>>> dict([(n,text[k*d:(k+1)*d]) for k,n in enumerate(numbers)])
{9: 'lo ', -4: 'Hel', -10: 'Wor', 17: 'ld.'}

Verfasst: Donnerstag 29. Oktober 2009, 18:43
von jbs
Darf ich nach der Intention deines Bemühens fragen?

Verfasst: Donnerstag 29. Oktober 2009, 18:54
von Hyperion
numerix hat geschrieben:
microkernel hat geschrieben:@Hyperion
nein
Dann bliebe die Frage nach einer Regel für die Teilung des Textes ...
Ein Sternchen fürs Aufpassen :D

Leider hat der eigentlich Interessierte das nicht wahrgenommen :twisted:

Verfasst: Donnerstag 29. Oktober 2009, 18:59
von microkernel
der text soll jetzt nicht ganz willkürlich aufgeteilt werden. Er sollte der Zahlenliste nach aufgeteilt werden. Die erste Zahl bekommt also den Anfang, die zweite den Zweiten teilm, usw.)

Verfasst: Donnerstag 29. Oktober 2009, 19:02
von numerix
microkernel hat geschrieben:der text soll jetzt nicht ganz willkürlich aufgeteilt werden. Er sollte der Zahlenliste nach aufgeteilt werden. Die erste Zahl bekommt also den Anfang, die zweite den Zweiten teilm, usw.)
Das war, denke ich, klar. Aber in welche Häppchen der Text eingeteilt werden soll, ist offen. Sollen die z.B. - ggf. bis auf das letzte - gleich lang sein? Dann wäre mein Code (s.o.) eine Möglichkeit.

Verfasst: Donnerstag 29. Oktober 2009, 19:15
von microkernel
numerix hat geschrieben:
microkernel hat geschrieben:der text soll jetzt nicht ganz willkürlich aufgeteilt werden. Er sollte der Zahlenliste nach aufgeteilt werden. Die erste Zahl bekommt also den Anfang, die zweite den Zweiten teilm, usw.)
Das war, denke ich, klar. Aber in welche Häppchen der Text eingeteilt werden soll, ist offen. Sollen die z.B. - ggf. bis auf das letzte - gleich lang sein? Dann wäre mein Code (s.o.) eine Möglichkeit.
Oh.. den beitrag hab ich garnicht bemerkt...
Das war genau das was ich geseucht hatte!
Vielen Dank!

Verfasst: Donnerstag 29. Oktober 2009, 19:32
von Hyperion
@numerix: Kannst Du mein /dev/glaskugel mal um Dein guessing()-Modul erweitern? :-D