2016-11-12 100 views
0

試圖對這個問題很多不同的方法,如嵌套循環for(它遍歷第一列表多次,第二次迭代的長度)後,我嘗試了.join我不能讓做什麼我想了。Python 3 |將字符串附加到列表中的項目?


這裏的問題是...

我用兩個for循環追加相同的列表。

第一for循環:

for friend in individual_friends: 
    friends.append(friend.text) 

這給了我:

['Jody Ann Elizabeth Lill\n98 mutual friends\nFriends', 
...., 
'Jayde Woods\n56 mutual friends\n4 new posts\nFriends'] 

第二for循環:

for link in individual_friends_links: 
    links = link.get_attribute("href") 
    friends.append(links) 

這給了我:

['Jody Ann Elizabeth Lill\n98 mutual friends\nFriends', 
..., ' 
Jayde Woods\n56 mutual friends\n4 new posts\nFriends', 
'https://m.facebook.com/jodyannelizabeth.lill?ref=bookmarks', 
..., 
'https://m.facebook.com/jayde.woods?ref=bookmarks'] 

什麼其實我想要的是:

['Jody Ann Elizabeth Lill\n98 mutual friends\nFriends\nhttps://m.facebook.com/jodyannelizabeth.lill?ref=bookmarks', 
..., 
'Jayde Woods\n56 mutual friends\n4 new posts\nFriends\nhttps://m.facebook.com/jayde.woods?ref=bookmarks'] 

回答

2

的錯誤

您所做的錯誤就在於,通過調用append,你總是增加了年底friends

但是對於您的鏈接,您不希望添加到friends的末尾,您想要更改已在friends中的元素的值。

解決方案

你需要更多的東西是這樣的:

# create your list of friends 
for friend in individual_friends: 
    friends.append(friend.text) 

# for every *i*th link, look up the *i*th friend in `friends`, 
# and modify that value, instead of adding to the end of `friends`. 
for link_index, link in enumerate(individual_friend_links): 
    friends[link_index] = friends[link_index] + '\n' + link.get_attribute("href") 

更好的解決方案

但這是冗長。有沒有必要做兩個顯式for -loops。你需要的zip的權力,這將你的兩個單獨的列表合併成2元組一個列表,並做完全同上。

for friend, link in zip(individual_friends, individual_friends_links): 
    friends.append(friend.text + '\n' + link.get_attribute("href")) 
+0

嘿Akshat謝謝你,你的答案是SOOOO接近,但我不得不解決一些事情,也許你並沒有預見到其中的一個,首先'friend'是我們不能用字符串連接一個WebElement ,因此我們需要在追加時將'.text'添加到'friend'。其次,你錯過了在級聯添加'\ N',請編輯你的答案對我來說,爲正確答案標記... –

+0

我加了換行符,並添加了'.text'。 –

+0

偉大的編輯你的答案Akshat,你已經說得很清楚,我仍然覺得你應該包括'.text'部分和'\ n'部分,因爲其他人可能有類似的問題,沒有基本的機制知識。但無論如何,偉大的答案和謝謝! –

相關問題