2013-02-15 8 views

Odpowiedz

14

Jeśli chcesz kodować w UTF-8, można po prostu zrobić:

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

można nazwać str na wszystkich wartości (zauważ, że mapa jest nieco leniwy, list() dodaje natychmiast włączyć go z powrotem do indeksowanej obiektu):

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

też użyć wyrażeń listowych:

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

W końcu jednak, po co wymaga od nich, aby być str jawnie; dodane do szablonu django (np. {{ value }}), uy znikną.

+0

Jak wspomniano, ty można pominąć wywołanie list(). Nie mam żadnych problemów z tym. Jeśli potrafisz wyjaśnić, dlaczego wystąpił problem, byłbym wdzięczny! – Dap

+0

Hmm, masz rację. Po prostu wypróbowałem to w py27 i py34, gdzie py27 zwraca 'list', py34 zwraca obiekt' map'. Używany w szablonie prawdopodobnie nie ma różnicy. Pozostawię odpowiedź w niezmienionej formie, ponieważ wynik interpretacji jest dużo jaśniejszy (bez 'list()', py3 będzie wskazywać coś w stylu ''). – akaIDIOT

2

myślę krótka droga korzysta json.dumps()

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

więc będzie uzyskać wynik ciąg jako formacie JSON jak

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

a jeśli chcesz to zmienić w zmiennej Pythona, wystarczy użyć eval jak funkcja, więc kod bardziej jak to

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

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

użyłem tego

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

w Pythonie 2.7 Justing używając mapy bez listy jest w porządku, jak również

list_of_python_strings = map(str, [u'accelerate']) 
Powiązane problemy