cuốn sách gpt4 ai đã làm

python - 使用 RegEx 从字符串中获取 YouTube 视频 url 或 YouTube 视频 ID

In lại Tác giả: Vũ trụ không gian 更新时间:2023-11-04 06:59:43 29 4
mua khóa gpt4 Nike

所以我一直坚持这个大约一个小时左右,我就是无法让它工作。到目前为止,我一直在尝试从字符串中提取整个链接,但现在我觉得只获取视频 ID 可能更容易。

RegEx 需要从以下链接样式中获取 ID/URL,无论它们在字符串中的什么位置:

http://youtube.com/watch?v=iwGFalTRHDA
http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related
https://youtube.com/iwGFalTRHDA
http://youtu.be/n17B_uFF4cA
youtube.com/iwGFalTRHDA
youtube.com/n17B_uFF4cA
http://www.youtube.com/embed/watch?feature=player_embedded&v=r5nB9u4jjy4
http://www.youtube.com/watch?v=t-ZRX8984sc
http://youtu.be/t-ZRX8984sc

到目前为止,我有这个正则表达式:

((http(s)?\:\/\/)?(www\.)?(youtube|youtu)((\.com|\.be)\/)(watch\?v=)?([0-z]{11}|[0-z]{4}(\-|\_)[0-z]{4}|.(\-|\_)[0-z]{9}))

这会捕获链接,但它也会将链接分解为多个部分,并将其也添加到列表中,因此如果字符串包含单个 youtube 链接,则打印列表时的输出如下所示:

('https://www.youtube.com/watch?v=Idn7ODPMhFY', 'https://', 's', 'www.', 'youtube', '.com/', '.com', 'watch?v=', 'Idn7ODPMhFY', '', '')

我需要列表只包含链接本身,或者只包含视频 ID(这样更可取)。我真的已经尝试自己做了很长一段时间了,但我就是想不通。我想知道是否有人可以为我整理正则表达式并告诉我哪里出错了,这样我以后就不会再遇到这个问题了?

câu trả lời hay nhất

与其编写可能并非在所有情况下都有效的复杂正则表达式,不如使用工具来分析 url,例如 urllib:

from urllib.parse import urlparse, parse_qs

url = 'http://youtube.com/watch?v=iwGFalTRHDA'

def get_id(url):
u_pars = urlparse(url)
quer_v = parse_qs(u_pars.query).get('v')
if quer_v:
return quer_v[0]
pth = u_pars.path.split('/')
if pth:
return pth[-1]

如果两次尝试都失败,此函数将返回 Không có.

我用示例 url 测试了它:

>>> get_id('http://youtube.com/watch?v=iwGFalTRHDA')
'iwGFalTRHDA'
>>> get_id('http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related')
'iwGFalTRHDA'
>>> get_id('https://youtube.com/iwGFalTRHDA')
'iwGFalTRHDA'
>>> get_id('http://youtu.be/n17B_uFF4cA')
'n17B_uFF4cA'
>>> get_id('youtube.com/iwGFalTRHDA')
'iwGFalTRHDA'
>>> get_id('youtube.com/n17B_uFF4cA')
'n17B_uFF4cA'
>>> get_id('http://www.youtube.com/embed/watch?feature=player_embedded&v=r5nB9u4jjy4')
'r5nB9u4jjy4'
>>> get_id('http://www.youtube.com/watch?v=t-ZRX8984sc')
't-ZRX8984sc'
>>> get_id('http://youtu.be/t-ZRX8984sc')
't-ZRX8984sc'

关于python - 使用 RegEx 从字符串中获取 YouTube 视频 url 或 YouTube 视频 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45579306/

29 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress