Python3 |将字符串附加到列表中的项目?

2024-09-28 16:44:54 发布

您现在位置:Python中文网/ 问答频道 /正文

在尝试了许多不同的方法来解决这个问题之后,比如嵌套的for循环(它在第一个列表上的迭代次数与第二个迭代的长度一样多),我尝试了.join,但我无法做到我想要的


问题出在这里…

我使用两个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']

Tags: comrefforfacebookbookmarksfriendsannelizabeth
1条回答
网友
1楼 · 发布于 2024-09-28 16:44:54

错误

你犯的错误是,通过调用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-循环。您需要^{}的强大功能,它将把两个单独的列表合并成一个包含两个元组的列表,并执行与上面完全相同的操作

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

相关问题 更多 >