簡體   English   中英

我如何將這個 for 循環的 output 變成一個字符串,變成一個變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM