Python正则提取URL输出带列表括号问题求解
调整代码输出纯URL字符串的解决方案
问题原因
re.findall()方法返回的是所有匹配结果组成的列表,即便每行仅匹配到1个URL,也会以列表形式返回,这就是输出带[]的核心原因- 你当前使用的正则存在缺陷:字符集未包含URL路径常用的
/符号,会出现URL匹配不全的问题
方案1:最小改动(基于原有正则逻辑优化)
仅需修改匹配后的取值逻辑,同时补全正则规则的字符集即可,代码如下:
import re with open("test.txt","r") as test: for i in test: # 补全正则字符集,增加/支持路径匹配 x = re.findall("^[://.a-zA-Z0-9-_/]*", i) # 取列表第一个元素输出,strip()去掉可能的空白字符 print(x[0].strip())
方案2:更高效的无正则方案
因为每行URL和后续状态码等信息都是用空格分隔的,直接按空格切分取第一个元素即可,无需正则匹配,性能更高:
with open("test.txt","r") as test: for i in test: # 按任意空白字符切分,取第一个元素就是纯URL url = i.split()[0] print(url)
内容的提问来源于stack exchange,提问作者X_jrbgyt_3
相关产品推荐
相关产品推荐

