Text splitten

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
Benutzeravatar
microkernel
User
Beiträge: 271
Registriert: Mittwoch 10. Juni 2009, 17:27
Wohnort: Frankfurt
Kontaktdaten:

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
Zuletzt geändert von microkernel am Donnerstag 29. Oktober 2009, 18:14, insgesamt 1-mal geändert.
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Code: Alles auswählen

>>> print "Hello World"[:2]
"He"
>>> print "Hello World"[:5]
"Hello"
Zuletzt geändert von SigMA am Donnerstag 29. Oktober 2009, 18:37, insgesamt 2-mal geändert.
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Gibt es einen Zusammenhang zwischen den Zahlen und den Wort-Schnipseln?

Wenn nein, nach wlecher Regel soll das Wort denn aufgeteilt werden?
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

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.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
microkernel
User
Beiträge: 271
Registriert: Mittwoch 10. Juni 2009, 17:27
Wohnort: Frankfurt
Kontaktdaten:

@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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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.'}
Zuletzt geändert von numerix am Donnerstag 29. Oktober 2009, 18:55, insgesamt 1-mal geändert.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Darf ich nach der Intention deines Bemühens fragen?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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:
Benutzeravatar
microkernel
User
Beiträge: 271
Registriert: Mittwoch 10. Juni 2009, 17:27
Wohnort: Frankfurt
Kontaktdaten:

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.)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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.
Benutzeravatar
microkernel
User
Beiträge: 271
Registriert: Mittwoch 10. Juni 2009, 17:27
Wohnort: Frankfurt
Kontaktdaten:

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!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@numerix: Kannst Du mein /dev/glaskugel mal um Dein guessing()-Modul erweitern? :-D
Antworten