0

次のようなテキストファイルがあります。

#some_line
    @another_line
        original_string1|new_string1
#some_other_line
    @and_another_line
        original_string2|new_string2

すべての行を @ で、その前の行を # で関連付けられるようにしたいと考えています。Pythonでこれを達成するための戦略を理解できないようです。

これが私の現在のコードです:

    with open(self.file, 'r') as f:
        for i, line in enumerate(f):
            line = line.strip(' \t\n\r')
            if '#' in line[:1]:
                self.parent[i] = line[1:]
            if '@' in line[:1]:
                self.child[i] = line[1:]
            if '|' in line:
                key, value = line.split('|')
                self.strings[key] = value

各親エントリを参照し、子エントリをそれに関連付けることができる必要があります。「|」のある行 また、親にも関連付ける必要があります。

4

2 に答える 2

0

これは仕事をするはずです:

with open(self.file, 'r') as f:
    self.result = {}

    for line in f.readlines():
        line = line.strip()

        if line.startswith("#"):
            parent = line[1:]
            self.result[parent] = {}

        if line.startswith("@"):
            child = line[1:]
            self.result[parent][child] = {}

        if '|' in line:
            key, value = line.split('|')
            self.result[parent][child][key] = value

それで

print self.result
>>> {
    'some_other_line': {
        'and_another_line': {
            'original_string2': 'new_string2'
        }
    },
    'some_line': {
        'another_line': {
            'original_string1': 'new_string1'
        }
    }
}
于 2013-08-13T03:28:57.170 に答える