0

の目的はversion_from_path(path)、Windowsシステム上のそのインストールのデフォルトの名前付きおよびターゲットルートディレクトリへの絶対パスを指定して、Pythonインストールのバージョン番号を返すことです(例'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

現在、必要な結果を達成するためにスライス表記とフォーマット操作を使用していますが、正規表現を使用して同じ機能がどのように実現されるかを確認したいと思います。

ご協力いただきありがとうございます。

4

4 に答える 4

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() ) )
于 2013-03-24T21:16:14.910 に答える
0

あなたはこれを行うことができます:

return re.sub(r".*?(\d)(\d)", r"\1.\2", path)

末尾の数字をすべてキャプチャして、最後の数字の直前にドットを配置する場合:

return re.sub(r".*?(\d*?)(\d)$", r"\1.\2", path)
于 2013-03-24T21:20:25.003 に答える
0

バージョン番号は、sys.version_infoで簡単かつ詳細に入手できます。

>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=3, releaselevel='final', serial=0)
于 2013-03-24T22:32:58.210 に答える
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)
于 2013-03-25T10:54:50.417 に答える