2016-07-05 8 views
0

テキストファイルを読み込むプログラムを作成するという課題に私は押しつけられています。このプログラムはまた、テキストファイル内の特定のものを見つける必要がある、私はすでにファイルの基本的な読み取りと検索を行う方法を考え出している。基本的な読み込みと検索を行った後、最も関連性の高い情報が取り出され、それぞれのテキストファイルに格納されます。これが問題になり始めるところです。私はRaspiコンフィグを使用していますと言うことができます、私は読んでいTXTは次のようになります。私が必要とするすべての変数名を引っ張った後Pythonの特定の行の文字列内の数字を見つける

# Set sdtv mode to PAL (as used in Europe) 
sdtv_mode=2 
# Force the monitor to HDMI mode so that sound will be sent over HDMI cable 
hdmi_drive=2 
# Set monitor mode to DMT 
hdmi_group=2 
# Set monitor resolution to 1024x768 XGA 60 Hz (HDMI_DMT_XGA_60) 
hdmi_mode=16 
# Make display smaller to stop text spilling off the screen 
overscan_left=20 
overscan_right=12 
overscan_top=10 
overscan_bottom=10 

、私は、このファイルから数字だけを引っ張っする必要があります。これは私が立ち往生している場所です。現在、私は過剰スキャンの数値を見つけようとしています。私はそれがどこにあるのかを見つけましたが、その値を知る必要があります。

def findOverScan(beg, end): 
    for num, line in enumerate(conf): 
     if re.match("overscan(.*)", line): 
      if num > beg and num < end: 
       lineNum.append(num) 

これで、私は行番号を見つけることができます。私はその番号を見つけるために何をすべきか分かりません。私はすべてをコピーして貼り付けているわけではありません。データベースにすべてを入力するための別のプログラム用のファイルを作成しています。

私はプログラムを上に置く前にconfigを開いていますが、私はそれを何度も使うので、何度もそれを再び開くのは意味がありませんでした。 findOverScanのパラメータは、それを見るための開始線と終了線にすぎません。

答えて

4

あなたが使用することができますdict

def read_config(conf): 
    config = {} 
    for line in conf: 
     line = line.strip() 
     if line.startswith('#'): 
      continue 
     varname, value = line.split('=') 
     config[varname] = value 
    return config 

にあなたの設定ファイルを解析するにはこれは、あなた print(read_config(filecontent))を与える:

{'hdmi_drive': '2', 
'hdmi_group': '2', 
'hdmi_mode': '16', 
'overscan_bottom': '10', 
'overscan_left': '20', 
'overscan_right': '12', 
'overscan_top': '10', 
'sdtv_mode': '2'} 

すべての値がint型であればあなたがint(value)を追加することができます。

1

正規表現のキャプチャグループを使用すると、オーバースキャンタイプと等号の後の数字を抽出できます。

a = 'overscan_left=20' 
b = re.match('overscan_([^=]+)=([0-9]+)',a) 
if b: 
    print b.groups() 

出力:

('left', '20') 

あなたはint(b.groups()][1])で整数に'20'文字列表現に変換する必要があります。

関連する問題