version_from_path(path)
的目的是返回Python安装的版本号,给定Windows系统上该安装的默认命名和目标根目录的绝对路径(例如'C:\PythonXX'
)。
def version_from_path(path):
return "%s.%s" % (path[-2:-1], path[-1:])
作为一个例子......
print(version_from_path('C:\Python27'))
print(version_from_path('C:\Python32'))
print(version_from_path('C:\Python33'))
... ...产生
2.7
3.2
3.3
我目前正在使用切片表示法和格式化操作来实现所需的结果,但是我有兴趣看看如何使用正则表达式实现相同的功能。
感谢您的帮助。
答案 0 :(得分:0)
import re
regex = re.compile( r"C:\\Python(\d)(\d)" )
def version_from_path_re(path):
m = regex.match( path )
if m:
return ".".join( map( str, m.groups() ) )
答案 1 :(得分:0)
你可以这样做:
return re.sub(r".*?(\d)(\d)", r"\1.\2", path)
如果要捕获所有尾随数字并将点放在最后一位之前:
return re.sub(r".*?(\d*?)(\d)$", r"\1.\2", path)
答案 2 :(得分:0)
sys.version_info中可以轻松详细地提供版本号。
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=3, releaselevel='final', serial=0)
答案 3 :(得分:0)
您可以搜索文件include/patchlevel.h
:
def version_from_path(path):
with open(path + '/include/patchlevel.h') as f:
m = re.search(r'#define\s+PY_VERSION\s+"(\d+\.\d+)', f.read())
if m:
return m.group(1)