Elemente in einer Liste ändern

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
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

Hallo

Bräuchte mal wieder einen Tipp und zwar möchte ich beliebig vielen Elementen einer Liste vor und danach ein Zeichen hinzufügen. Also folgendes:

Code: Alles auswählen

# -*- coding: utf-8 -*-

t = raw_input("Suchbegriff: ")
sl = t.split("+")
print sl

>>['123', '456', '789']
Und nun möchte ich, dass jedes Element mit % beginnt und mit % endet.

Code: Alles auswählen

['%123%', '%456%', '%789%' usw..]
Ich hab da schon mal folgendes probiert, scheint aber der falsche Weg zu sein:
ss = u"%s%s%s" % (u"%", t.decode("utf-8"), u"%")
sl = ss.split("+")
print sl
Bei einer einzigen Eingabe funktioniert es aber logischerweise bei mehreren Elementen wird nur das erste Element am Anfang mit einem % bestückt und das letzte Element am Ende mit einem %.
deets

Code: Alles auswählen

l = ["%%%s%%" % item for item in l]
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Oder ab Python 2.6 mit `str.format`

Code: Alles auswählen

l = ['%{0}%'.format(item) for item in l]
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code: Alles auswählen

l = map('%{0}%'.format, l)
Das Leben ist wie ein Tennisball.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@lackschuh: Da Du in einem anderen Thread wegen SQL-Queries gefragt hast, assoziiere ich mit den `%`-Rahmen einfach mal SQL-Wildcards. Wäre es nicht sinnvoller, diese *in* der Query unterzubringen und nur den Platzhalter dazwischen zu schreiben?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Das geht nicht. Dann müsste man aus 'SELECT * FROM table WHERE tag LIKE ?' ja so etwas wie 'SELECT * FROM table WHERE tag LIKE %?%' machen, nur dass das Fragezeichen ja für den gesamten Wert steht der vom DB-Modul escaped wird. Wenn Tags zum Beispiel Zeichenketten sind, würde daraus "SELECT * FROM table WHERE tag LIKE %'some_value'%" werden, was kein gültiges SQL mehr ist.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ok, das war mir in dem Moment nicht bewusst.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten