Seite 1 von 1

Elemente in einer Liste ändern

Verfasst: Freitag 21. September 2012, 10:27
von lackschuh
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 %.

Re: Elemente in einer Liste ändern

Verfasst: Freitag 21. September 2012, 10:41
von deets

Code: Alles auswählen

l = ["%%%s%%" % item for item in l]

Re: Elemente in einer Liste ändern

Verfasst: Freitag 21. September 2012, 13:35
von cofi
Oder ab Python 2.6 mit `str.format`

Code: Alles auswählen

l = ['%{0}%'.format(item) for item in l]

Re: Elemente in einer Liste ändern

Verfasst: Freitag 21. September 2012, 13:50
von EyDu

Code: Alles auswählen

l = map('%{0}%'.format, l)

Re: Elemente in einer Liste ändern

Verfasst: Freitag 21. September 2012, 20:53
von Hyperion
@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?

Re: Elemente in einer Liste ändern

Verfasst: Freitag 21. September 2012, 21:46
von 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.

Re: Elemente in einer Liste ändern

Verfasst: Samstag 22. September 2012, 08:19
von Hyperion
Ok, das war mir in dem Moment nicht bewusst.