2016-11-12 79 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'部分,因为其他人可能有类似的问题,没有基本的机制知识。但无论如何,伟大的答案和谢谢! –

相关问题