我只想打印字符串中以“/watch”开头的所有“单词”,然后将所有“/watch...”添加到列表中。提前致谢!
# Take a random video from my youtube recommended and add it to watch2gether
import requests
from bs4 import BeautifulSoup as BS
import time
import random
# Importing libraries
num = random.randint(1, 20)
recommended = requests.get('https://www.youtube.com/results?search_query=svenska+youtube+klassiker&sp=EgIQAQ%253D%253D')
recommended_soup = BS(recommended.content, features='lxml')
recommended_vid = recommended_soup.find_all('a', href=True)
for links in recommended_vid:
print(links['href'])
输出:
/
//www.youtube.com/upload
/
/feed/trending
/feed/history
/premium
/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ
/channel/UCEgdi0XIXXZ-qJOFPf4JSKw
/gaming
/feed/guide_builder
/watch?v=PbVt_O1kFpA
/watch?v=PbVt_O1kFpA
/user/thedjdoge
/watch?v=1lcksCjvuSs
/watch?v=1lcksCjvuSs
/channel/UCn-puiDqHNMhRvq6wsU3nsQ
/watch?v=AKj_pxp2l1c
/watch?v=AKj_pxp2l1c
/watch?v=QNnEqTQD6DM
/watch?v=QNnEqTQD6DM
/channel/UCDuOAYzgiZzqqlXd2G3GAwg
....
也许我可以使用 .remove 或 .replace 之类的东西,但不知道该怎么做,所以我感谢所有帮助。
最佳答案
是的,这里绝对是矫枉过正。这是过滤器的完美用例
a_list = ["/watch/blah", "not/watch"]
new_list = filter(lambda x: x.startswith("/watch"), a_list)
print(list(new_list))
['/watch/blah']
请注意它返回一个生成器,因此如果您想要列表,请将其包装在列表中。
http://book.pythontips.com/en/latest/map_filter.html如果您想了解有关执行此类数据清理的函数的更多信息,这是很好的选择。如果您需要真正喜欢数据清理,请考虑使用 pandas。它有一个陡峭的学习曲线,但对于复杂的数据清理来说它非常棒。
关于python - 如何只打印字符串中的特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54757988/