擅长:python、mysql、java
<p>您的模式中不需要前导和尾随<code>\s</code>。除此之外,YouTube的url不能用一种模式进行三层解析,因为对于<code>https://youtu.be/...</code>形式的每个url都有一个简短的形式。在</p>
<p>最好使用<a href="https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlparse" rel="nofollow noreferrer">^{<cd3>}</a>解析url:</p>
<pre><code>from urllib.parse import urlparse
def parse_youtube_url(url_str):
parsed_url = urlparse(url_str)
if parsed_url.netloc in ('www.youtube.com', 'youtu.be'):
youtube_id = parsed_url.query.split('&')[0].split('=')[1]
else:
raise ValueError('Host is not youtube')
return youtube_id
url = 'https://www.youtube.com/watch?v=dwyw7esd67'
print(parse_youtube_url(url))
# 'dwyw7esd67'
</code></pre>
<p>在python2中,您将使用<code>from urlparse import urlparse</code>。在</p>