python - 如何只打印字符串中的特定单词

标签 python python-3.x

我只想打印字符串中以“/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/

相关文章:

python - Anaconda模块安装: Error: Could not find Binstar user netcdf

python - 如何从 Python 列表中删除标题和索引?

python - 将列表元素与字典的值进行匹配

python - 如何使用 for 循环检查板中的所有值是否已满

python - tslearn 包看不到 numpy 安装 python

python - 在numpy中将负数舍入为零时如何消除多余的减号?

python - 我如何使用 get_dummies 使用字符串列连接 2 个数据帧并计算字符串中的重复单词

python - 单元测试时如何获得实际的 Pyramid 请求

python - 两种类型的类属性定义之间的区别?

string - 固定宽度数字格式化python 3