如何使用Python re模块移除requirements.txt列表项的python_version限定部分
用Python re模块移除requirements中的python_version环境标记
直接用re.sub()配合正则表达式就能搞定,下面给你两种方案按需选择:
方案1:精准移除python_version相关后缀
如果只想去掉包含python_version的后缀,用这个正则:
import re # 原始需求列表 req_list = ['pkg1==0.1; python_version < "3.7"', 'pkg2==0.6', 'pkg3>=0.4'] # 编译正则:匹配分号开头、包含python_version的后缀部分 pattern = re.compile(r';\s*python_version\s*[<>!=]+\s*".*"') # 批量处理每个列表项 cleaned_reqs = [re.sub(pattern, '', req) for req in req_list] print(cleaned_reqs) # 输出:['pkg1==0.1', 'pkg2==0.6', 'pkg3>=0.4']
正则说明:
;:匹配后缀的起始分号\s*:匹配分号前后可能存在的空格python_version:精准匹配环境标记关键词[<>!=]+:匹配版本比较操作符(比如<、>=、==等)\s*".*":匹配版本号的引号和内容
方案2:移除所有分号开头的环境标记
如果想一次性去掉requirements中所有以分号开头的环境限制(不止python_version),可以用更简单的正则:
import re req_list = ['pkg1==0.1; python_version < "3.7"', 'pkg2==0.6; os_name == "posix"', 'pkg3>=0.4'] # 匹配分号开头到字符串结尾的所有内容 pattern = re.compile(r';.*') cleaned_reqs = [re.sub(pattern, '', req) for req in req_list] print(cleaned_reqs) # 输出:['pkg1==0.1', 'pkg2==0.6', 'pkg3>=0.4']
这个方案更通用,适合批量清理所有环境标记的场景。
内容的提问来源于stack exchange,提问作者user22383274
相关产品推荐
相关产品推荐

