提取首个HTTPS链接时代码返回全部链接的问题排查
问题:提取Vimeo视频文本中的第一条HTTPS链接失败
变量x存储的Vimeo视频信息文本如下:
1758162 hd video/mp4 2160 3840 23.976 https://player.vimeo.com/external/479728625.hd.mp4?s=84b5a866b5b24de0e1d3bc20fbd0a98d544bda93&profile_id=172&oauth2_token_id=57447761 1200135 hd video/mp4 1080 1920 29.97 https://player.vimeo.com/external/449630779.hd.mp4?s=2d49b6c1ec0a2fe9b65b424a112839aba1ae5437&profile_id=175&oauth2_token_id=57447761
尝试提取第一条HTTPS链接时编写的代码:
d = [] if "https" in str(x): d.append(x) else: pass print(d[0])
执行后返回了两条HTTPS链接,而非仅第一条,问题出在哪里?
错误原因
你的代码逻辑存在核心问题:当检测到x中包含"https"时,直接将整个原始文本添加到了列表d中,并没有对文本进行拆分提取。因此d[0]实际上是完整的原始字符串,自然包含两条链接。
正确解法
需要先将文本按换行符分割为单独的行,然后遍历每行找到第一个以https开头的内容即可:
方法一:循环遍历取第一条
# 将文本按行分割为列表 lines = str(x).splitlines() first_https_link = None for line in lines: # 去除行首尾空白字符后判断是否以https开头 stripped_line = line.strip() if stripped_line.startswith("https"): first_https_link = stripped_line break # 找到第一条后立即终止循环,避免多余遍历 print(first_https_link)
方法二:使用生成器表达式快速获取
lines = str(x).splitlines() # 直接取第一个符合条件的链接 first_https_link = next(line.strip() for line in lines if line.strip().startswith("https")) print(first_https_link)
内容的提问来源于stack exchange,提问作者mnnewbilr
相关产品推荐
相关产品推荐

