0

Pythonの使用/学習を始めたばかりで、いくつか質問があります。

レポートツールによって生成されたテキストファイルがあります。このファイルには、このようなものが含まれています。基本的に以下に書かれているものと同じフォーマットに従うものがたくさんあります。

Format = {
Window_Type = "Tabular"、
Tabular = {Num_row_labels =5}}

このファイルには名前付きの値属性があります。たとえば、Window_Typeは、値Tabularを持つ属性の名前です。ここでも、表形式の名前付き属性には値5が関連付けられています。

私がしたいのはファイルを開くことです。

  1. Window_Typeが表形式であるかどうかを確認します
  2. はいの場合は、表形式に関連付けられているNum_row_labelsを確認します。
  3. Num_row_lablesの値が5以上の場合は、テキストファイルの名前と、そのファイルが存在するフォルダーのパスを出力します。

Eclipse3.7.2IDEでPython3.2を使用しています。

テスト部分として、IDEにテキストファイルをインポートし、以下のコードを使用してファイルを読み取りました。将来的には、拡張子がmrkのファイルが置かれているフォルダをトラバースできるようになるはずです(これらのファイルはそこに保持されているため、これは既知のディレクトリになります)。親切に助けてください。本当にありがとう!

import os.path
fn = os.path.join(os.path.dirname(__file__), 'Multitab.mrk')
with open(fn, 'r') as file: 
    print(file.read())
4

1 に答える 1

0

この回答は非常に汚いハックであることに注意してください。この形式は JSON 形式とほぼ同じで、JSON パーサーできれいに解析できるように文字列を変換する RE を作成するよう促されました。これは私がしたことです:

import re
import json

s = """Format= {
Window_Type="Tabular",
Tabular= { Num_row_labels=5 } }"""

s = "{" + re.sub(r'([a-zA-Z0-9_]+)=',r'"\1":', s) + "}"
obj = json.loads(s)

if obj['Format']['Window_Type'] == "Tabular":
    print "Its tabular!"
    numrows = obj['Format']['Tabular']['Num_row_labels']
    print "Numrows:", numrows
    if numrows >= 5:
        print "Print this fileName"

出力:

Its tabular!
Numrows: 5
Print this fileName
于 2012-06-20T18:00:37.473 に答える