は、このデータ・フォーマット用のパーサです。それは標準だ場合、私は、パーサーがあるかどうので、私は知らない、わからないが、私はのみを働くパーサを思い付いた場合は、投稿したとしてフォーマットされている場合、入力:
import re
group_start_pattern = re.compile(r"(\w+)\s*\{")
value_pattern = re.compile(r"(\w+)\s*\=\s*(.*)")
def parse(src):
result = []
current_children = result
current_group = None
for line in src.split('\n'):
line = line.strip()
if not line:
continue # Empty line
match = value_pattern.search(line)
if match:
# It's a 'key = value' line
if current_group is None:
raise SyntaxError("No current group")
key, value = match.groups()
current_group[key.strip()] = value.strip()
continue
match = group_start_pattern.search(line)
if match:
# It's a "Group {" opening line
current_group = {
'name': match.group(1),
'children': [],
'parent': current_group,
}
current_children.append(current_group)
current_children = current_group['children']
continue
if line.strip() == '}':
# Closing group
if current_group is None:
raise SyntaxError("No current group")
current_group = current_group.pop('parent')
current_children = current_group['children'] if current_group else result
continue
raise SyntaxError("Invalid line: {!r}".format(line))
if current_group:
raise SyntaxError("Missing closing braces")
return result
与えられた文字列の場合、このパーサの出力はdictsのリストです:
[{'name': 'Root_file', 'Version': '"1.1"', 'children': [
{'name': 'Cluster', 'ClusterName': '"cluster 1"', 'children': [
{'groupType': 'Type1', 'children': [
{'name': 'Group', 'name': 'Subgroup', 'children': [], 'country': 'US'},
]},
{'name': 'Group', 'groupType': 'Type2', 'children': [
{'country': 'England', 'name': 'Subgroup', 'children': []},
]},
]},
{'name': 'Cluster', 'ClusterName': '"cluster 2"', 'children': [
{'name': 'Group', 'groupType': 'Type1', 'children': [
{'name': 'Subgroup', 'country': 'US', 'children': []},
{'name': 'Subgroup', 'country': 'China', 'children': []},
{'name': 'Subgroup', 'country': 'Germany', 'children': []},
]},
]}],
}]
これは、JSONのように見える、あなたはPythonの[JSON](https://docs.python.org/2.7/library/を使用して試してみましたjson.html) –
構造は深くネストされているので、基本的にこれを2Dデータテーブルに変換する方法は、設計上の決定事項です。なぜデータをJSONエントリとして保存しないのですか? –
このようなデータが私に与えられます。 JSONを提案している人には、データをJSON形式で保存してから、JSON形式のデータにコードを書き込む必要があるということですか? –