[英]How would I make the output of this for loop into a string, into a variable?
在這個循環中,我試圖接受用戶輸入並不斷地將其放入列表中,直到他們寫下“停止”。 當循環中斷時,for 循環會打印出所有的 li。
我將如何獲取 for 循環的 output 並將其設為字符串以便我可以將其加載到變量中?
x = ([])
while True:
item = raw_input('Enter List Text (e.g. <li><a href="#">LIST TEXT</a></li>) (Enter "stop" to end loop):\n')
if item == 'stop':
print 'Loop Stopped.'
break
else:
item = make_link(item)
x.append(item)
print 'List Item Added\n'
for i in range(len(x)):
print '<li>' + x[i] + '</li>\n'
我希望它以這樣的方式結束:
代碼:
print list_output
Output:
<li>Blah</li>
<li>Blah</li>
<li>etc.</li>
在 python 中,字符串支持join
方法(在概念上與split
相反),允許您使用字符串將列表(技術上是可迭代的)元素連接在一起。 一個非常常見的用例是', '.join(<list>)
將列表的元素復制到逗號分隔的字符串中。
在你的情況下,你可能想要這樣的東西:
list_output = ''.join('<li>' + item + '</li>\n' for item in x)
如果您希望列表的元素由換行符分隔,但字符串末尾沒有換行符,您可以這樣做:
list_output = '\n'.join('<li>' + item + '</li>' for item in x)
如果你想變得非常瘋狂,這可能是最有效的(雖然我不推薦它):
list_output = '<li>' + '</li>\n<li>'.join(item for item in x) + '</li>\n'
s = "\n".join(['<li>' + i + '</li>' for i in x])
我討厭成為回答不同問題的人,但是手工編碼的 HTML 代讓我感覺不舒服。 即使你只是在做這個超級簡單的列表生成,我強烈建議你看看像Genshi這樣的模板語言。
您的程序的 Genshi 版本(更長一點,但是更好):
from genshi.template import MarkupTemplate
TMPL = '''<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:py="http://genshi.edgewall.org/">
<li py:for="item in items">$item</li>
</html>'''
make_link = lambda x: x
item, x = None, []
while True:
item = raw_input('Enter List Text (Enter "stop" to end loop):\n')
if item == 'stop':
break
x.append(make_link(item))
print 'List Item Added\n'
template = MarkupTemplate(TMPL)
stream = template.generate(items = x)
print stream.render()
list_output = "<li>%s</li>\n" * len(x) % tuple(x)
用以下內容替換底部的 for 循環:
list_output=""
for aLine in x:
list_output += '<li>'+aLine+'</li>\n'
另請注意,由於 x 是一個列表,因此 Python 允許您遍歷列表的元素,而不必遍歷用於查找列表中元素的索引變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.