2013-02-24 91 views
0

這裏是我的代碼:不能打印個別字符串random.choice,只有單個字符

import xml.etree.ElementTree as ET 
import random 

tree = ET.parse('news.xml') 
root = tree.getroot() 

channel = root.find('channel') 

for item in channel.findall('item'): 
    title = item.find('title').text 
    description = item.find('description').text 
    link = item.find('link').text 
    print random.choice(title) 

這打印出每個標題的對象一個隨機字符。我想打印出一個完整的標題字符串。這是原來的XML文件:http://www.11alive.com/rss/local/3/10.xml

+0

把所有的冠軍,在列表和'random.choice'列表。 – Volatility 2013-02-24 10:23:07

+0

在你的for循環中,當你打印random.choice(title)''title'變量只有1個標題時,你需要做的是將所有的標題附加到列表中,並且在for循環結束時, '隨機打印,選擇(隨機)' – avasal 2013-02-24 10:23:26

回答

2

更改for循環做到這一點:

titles = [] 

for item in channel.findall('item'): 
    titles.append(item.find('title').text) 
    description = item.find('description').text 
    link = item.find('link').text 

print random.choice(titles) 

這將打印從列表中隨機稱號。

1

這是我落得這樣做,感謝提示:

titlelist = [] 

for item in channel.findall('item'): 

    title = item.find('title').text 
    description = item.find('description').text 
    link = item.find('link').text 
    titlelist.append(title) 

print random.choice(titlelist) 
+0

爲什麼要設置'description'和'link'呢? – 2013-02-24 10:32:27

+1

此外,這是什麼Volatility發佈,爲什麼不接受回答,而不是張貼自己的? – 2013-02-24 10:33:05

+0

我想我回到頁面的時候已經有了一個答案,並且想要顯示我的答案,與波動率的答案略有不同(更長)。 – 2013-02-24 10:42:21