2013-02-15 2 views

Antwort

14

Wenn Sie in UTF-8 kodieren möchten, können Sie einfach tun:

definitions_list = [definition.encode("utf8") for definition in definitions.objects.values_list('title', flat=True)] 
8

Sie str auf alle Werte nennen könnte (beachten Sie, dass Karte ein bisschen faul ist, list() hinzugefügt sofort wieder in einer Wende Objekt drehen):

thingy = list(map(str, [u'accelerate', u'acute', u'bear', u'big'])) 

Oder eine Liste Verständnis verwenden:

[str(item) for item in [u'accelerate', u'acute', u'bear', u'big']] 

Am Ende aber, warum würden Sie sie benötigen str explizit zu sein; zu einer Django-Vorlage (wie {{ value }}) hinzugefügt, werden die u verschwinden.

+0

Wie bereits erwähnt, Sie kann den Aufruf von list() weglassen. Ich habe keine Probleme dabei. Wenn Sie herausfinden können, warum es ein Problem gibt, würde ich das schätzen! – Dap

+0

Hmm, du hast Recht. Probieren Sie dies in py27 und py34 aus, wobei py27 eine 'list' zurückgibt, py34 gibt ein' map' Objekt zurück. In einer Vorlage verwendet, gibt es wahrscheinlich keinen Unterschied. Ich lasse die Antwort wie sie ist, da die Ausgabe eines Interpreters viel klarer ist (ohne die 'list()', wird py3 etwas wie ' ') angeben. – akaIDIOT

2

ich denke, die kurze Wege json.dumps() verwendet

json.dumps(definitions.objects.values_list('title', flat=True)) 

, so dass Sie die Zeichenfolge Ergebnis als JSON-Format erhalten wie

'["accelerate", "acute", "bear", "big" ...]' 

und wenn Sie das in Python-Variable ändern möchten, verwenden Sie einfach eval als die Funktion, so dass mehr Code wie dies

json_format_string = json.dumps(definitions.objects.values_list('title', flat=True)) 

my_list = eval(json_format_string) # ['accelerate', 'acute', 'bear', 'big' ...] 
0

i verwendet, um dieses

my_list = list(map(str, [u'accelerate', u'acute', u'bear', u'big'...])) 
1

in Python 2.7 Justing ohne Liste mit Karte als auch in Ordnung ist

list_of_python_strings = map(str, [u'accelerate']) 
Verwandte Themen