2017-05-07 10 views
0

有名なpythonの設定パーサーがありますが、この種の設定フォーマットでは、パーサーが最適な選択ではないと思います。設定ファイルからpythonの値を抽出する

"AppState" 
{ 
    "appid"  "740" 
    "Universe"  "1" 
    "name"  "Counter-Strike Global Offensive - Dedicated Server" 
    "StateFlags"  "4" 
    "installdir"  "Counter-Strike Global Offensive Beta - Dedicated Server" 
    "LastUpdated"  "1492880350" 
    "UpdateResult"  "0" 
    "SizeOnDisk"  "14563398502" 
    "buildid"  "1771538" 
    "LastOwner"  "76561202168992874" 
    "BytesToDownload"  "6669177712" 
    "BytesDownloaded"  "6669177712" 
    "AutoUpdateBehavior"  "0" 
    "AllowOtherDownloadsWhileRunning"  "0" 
    "UserConfig" 
    { 
    } 
    "MountedDepots" 
    { 
     "731"  "3148506631334968252" 
     "740"  "8897003951704178635" 
    } 
} 

たとえば、「buildid」の値を最適な方法で抽出する方法はありますか。私は設定ファイルで何度も作業する必要があるので、私はこの種のフォーマットのための最も簡単な方法を探しています。

+0

この設定ファイルはどのように入手できますか?アップストリームで問題を解決する方が簡単で頑強になるかもしれません。適切なモジュールで簡単に解析される正規のJSONを使用しないでください。 – timgeb

答えて

0

あなたは、通常のファイルの使用としてそれを読むことができる場合:

import re 
with open('myfile.extension') as data: 
    for line in data: 
     if 'buildid' in line: 
      print re.findall('\d+', line) 
      break 
0

Python 2ソリューション:

with open("config.txt","r") as fp: 
    line_list = [c.strip() for c in fp.readlines()] 
    for line in line_list: 
     if "buildid" in line: 
      buildid = line.split()[1] 
      print int(buildid[1:-1]) 
      break 

出力:

1771538 

config.txtが含まれています

"AppState" 
{ 
    "appid"  "740" 
    "Universe"  "1" 
    "name"  "Counter-Strike Global Offensive - Dedicated Server" 
    "StateFlags"  "4" 
    "installdir"  "Counter-Strike Global Offensive Beta - Dedicated Server" 
    "LastUpdated"  "1492880350" 
    "UpdateResult"  "0" 
    "SizeOnDisk"  "14563398502" 
    "buildid"  "1771538" 
    "LastOwner"  "76561202168992874" 
    "BytesToDownload"  "6669177712" 
    "BytesDownloaded"  "6669177712" 
    "AutoUpdateBehavior"  "0" 
    "AllowOtherDownloadsWhileRunning"  "0" 
    "UserConfig" 
    { 
    } 
    "MountedDepots" 
    { 
     "731"  "3148506631334968252" 
     "740"  "8897003951704178635" 
    } 
} 

N.B .:可能であれば、適切なJSONを構成ファイルに使用します。 JSONを使用するのは間違いなく安全です。

+0

ええ、私はJSONが大好きですが、悲しいことに、この設定は自分自身では生成されません:(。 – kreishna

+0

そのことをお詫び申し上げます。 – arsho

関連する問題