2010-01-14 14 views
22

मैं सिर्फ एक मौजूदा सूची के माध्यम से लूप करना चाहता हूं और इसमें से अल्पविराम सीमित स्ट्रिंग बनाना चाहता हूं।
कुछ इस तरह: my_string = 'stuff, stuff, stuff, stuff'जिंज में स्ट्रिंग कॉन्सटेनेशन

मैं पहले से ही पता के बारे में loop.last, मैं सिर्फ पता है कि कैसे काम नीचे मेरी कोड में तीसरी लाइन बनाने की जरूरत है।

{% set my_string = '' %} 
{% for stuff in stuffs %} 
{% set my_string = my_string + stuff + ', '%} 
{% endfor%} 
+0

ठीक है कि मूल कोड मैं काम करता है पोस्ट, मैं इसे में {} {} में था {%%} के बजाय मेरा वास्तविक कोड मैं इसे करने के लिए सबसे अच्छा तरीका खोज रहा हूं और यह करने के लिए उपलब्ध चीजों को खोज रहा हूं, और यह दिन के अंत में रात के अंत में था, ताकि {{} } मेरी निराशा में फिसल गया। प्रतिक्रिया के लिए धन्यवाद – KacieHouser

उत्तर

42

तो stuffs स्ट्रिंग की एक सूची है, सिर्फ इस काम करेगा:

{{ stuffs|join(", ") }} 

Link प्रलेखन के लिए।

+0

अच्छा एक - मुझे दस्तावेज़ों में यह नहीं मिला। – doug

+6

+ के बजाय ~ [जैसा कि यहां कहा गया है] का उपयोग करना याद रखें (http://jinja.pocoo.org/docs/templates/#other-operators) – Josmar

3

मेरा बुरा, इसे सरल बनाने की कोशिश में, मैं बहुत दूर चला गया, वास्तव में stuffs सभी प्रकार की जानकारी का रिकॉर्ड है, मुझे बस इसमें आईडी चाहिए।

stuffs = [[123, first, last], [456, first, last]] 

मैं my_sting चाहते

my_sting = '123, 456' 

होने के लिए मेरे मूल कोड इस तरह देखा जाना चाहिए था:

{% set my_string = '' %} 
{% for stuff in stuffs %} 
{% set my_string = my_string + stuff.id + ', '%} 
{% endfor%} 

इसके बारे में सोच रही थी, stuffs शायद एक शब्दकोश है, लेकिन आप सार मिलता है ।

हाँ मैं join फिल्टर पाया, और इस तरह यह दृष्टिकोण जा रहा था:

{% set my_string = [] %} 
{% for stuff in stuffs %} 
{% do my_string.append(stuff.id) %} 
{% endfor%} 
{% my_string|join(', ') %} 

लेकिन संलग्न यह करने के लिए एक्सटेंशन का आयात, और कहा कि प्रलेखन पढ़ने के बिना काम नहीं करता है मुझे एक सिर दर्द दे दी है । यह स्पष्ट रूप से यह नहीं कहता है कि इसे आयात करने के लिए कहां से आयात किया जाए या यहां तक ​​कि जहां आप आयात कथन डालेंगे, इसलिए मुझे लगता है कि दो बुराइयों में से कम से कम कंसट करने का तरीका ढूंढना होगा।

+3

2.6 के बाद से आप फ़िल्टर में एक विशेषता का चयन कर सकते हैं। तो आप {{stuffs.join (',', विशेषता = 'id')}} देख सकते हैं http://jinja.pocoo.org/docs/templates/#join – dmertl

0

बस एक और हैक इस तरह हो सकता है।

मेरे पास स्ट्रिंग्स का ऐरे है जिसे मुझे संयोजित करने की आवश्यकता है। इसलिए मैंने उस सरणी को शब्दकोश में जोड़ा और फिर इसे लूप के लिए इस्तेमाल किया जो काम करता था।

{% set dict1 = {'e':''} %} 
{% for i in list1 %} 
{% if dict1.update({'e':dict1.e+":"+i+"/"+i}) %} {% endif %} 
{% endfor %} 
{% set layer_string = dict1['e'] %} 
0

तुम सिर्फ फिल्टर में शामिल होने का उपयोग नहीं कर सकते हैं लेकिन सरणी के प्रवेश पर कुछ कार्रवाई करने की जरूरत है:

{% for entry in array %} 
User {{ entry.attribute1 }} has id {{ entry.attribute2 }} 
{% if not loop.last %}, {% endif %} 
{% endfor %} 
संबंधित मुद्दे