You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何循环读取无限多行输入并单独提取其中的URL地址

多行输入提取URL实现方案

原有方案存在两个核心问题,无法满足需求:

  • 以空行作为输入终止判断条件,既不符合“无限多行输入”的要求,也无法处理内容中本身包含空行的场景
  • 仅完成了输入内容的拼接存储,没有实现URL提取的核心逻辑

具体实现代码

直接用Python标准库即可实现,不需要安装第三方依赖:

import re

# 预编译URL匹配规则,覆盖绝大多数HTTP/HTTPS协议的URL场景
url_match_rule = re.compile(r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+[/\w\-\.?=&%#]*')
url_result = []

while True:
    try:
        line_content = input()
        # 逐行提取匹配到的URL,追加到结果列表
        url_result.extend(url_match_rule.findall(line_content))
    except EOFError:
        # 捕获输入终止信号:用户按Ctrl+D(macOS/Linux)/Ctrl+Z后回车(Windows)时结束读取
        break

# 如需保留重复URL,可注释掉下方去重代码
url_result = list(dict.fromkeys(url_result))

# 输出结果
print("提取完成,共获取到以下URL:")
for index, single_url in enumerate(url_result, start=1):
    print(f"{index}. {single_url}")

方案说明

  • 输入读取逻辑不再以空行作为中断条件,支持任意行数的输入,中间夹杂空行也不会影响读取流程
  • 采用逐行匹配的方式提取URL,不需要把所有输入内容全量加载到内存拼接,大文本输入下内存占用更低、运行速度更快
  • 默认对结果做了顺序去重,不会打乱URL首次出现的顺序;如果需要保留重复出现的URL,注释掉对应去重代码即可
  • 如果需要提取FTP、SSH等其他协议开头的URL,只需要修改正则规则的协议匹配部分即可

内容的提问来源于stack exchange,提问作者pavel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:18:20