Python3如何使用正则正确提取.env文件中APP_SECRET对应的参数值
排查步骤与解决代码
第一步:确认响应内容的真实格式
先执行下方代码打印原始响应内容,确认是否存在不可见特殊字符(如零宽空格、多余空白、换行格式异常):
print(repr(RESPONSE))
如果打印结果中APP_SECRET前后存在特殊字符,调整正则匹配规则兼容即可。
为什么
if "APP_SECRET" in RESPONSE成立但re.search返回None?
大概率是响应内容中存在in判断可以识别、但正则默认匹配不到的不可见特殊字符,用repr打印原始内容即可定位。
第二步:修正正则写法,实现值提取
你现有代码的正则仅匹配APP_SECRET字符串,就算匹配成功也无法提取等号后的值,正确写法如下:
import re # 正则匹配规则:兼容等号前后的空白,捕获等号后所有非空白内容 match_obj = re.search(r'APP_SECRET\s*=\s*(\S+)', RESPONSE) if match_obj: app_secret = match_obj.group(1) print(app_secret)
如果.env值允许包含空格,可以把正则里的\S+换成.*,提取后自行做首尾去空处理即可。
如果存在键名大小写不确定的情况,增加不区分大小写的参数:
match_obj = re.search(r'APP_SECRET\s*=\s*(\S+)', RESPONSE, flags=re.IGNORECASE)
兜底方案:不用正则直接拆分
如果正则匹配一直异常,可以直接按行拆分响应内容取值,兼容性更高:
for line in RESPONSE.splitlines(): line = line.strip() if line.startswith('APP_SECRET'): app_secret = line.split('=', 1)[-1].strip() print(app_secret) break
内容的提问来源于stack exchange,提问作者Jaquarh
相关产品推荐
相关产品推荐

