我這下面的代碼段:需要幫助解析配置數據
all_messages = {}
num = None
index = None
begin_message = lambda x: re.match(r'^([0-9]+)\: (.+)', x)
with open(filename) as f:
messages = {}
message = []
for line in f:
m = re.match(r'^\[(.+)\]$', line)
if m:
if index:
messages.update({num: '\n'.join(message)})
num = None
all_messages.update({index: messages})
index = m.group(1)
print index
elif begin_message(line):
if num:
messages.update({num: '\n'.join(message)})
del message[:]
num = int(begin_message(line).group(1))
begin = begin_message(line).group(2).strip()
if begin:
message.append(begin)
else:
cont = line.strip()
if cont:
if num:
message.append(cont)
else:
end = line.strip()
if end:
if num:
messages.update({num: '\n'.join(message)})
all_messages.update({index: messages})
print all_messages
我試圖解析出類似這樣的一個配置文件:
[Message 1]
1: Hello
2: Hi
3: Blah
Hah
[Message 2]
1: Hi
2: How's it going?
3: Great.
4: Yep
我搶指數爲內容,然後是每封郵件,除了當我嘗試更新字典時,所有內容都能正常工作,它似乎將隨後的郵件替換爲開頭郵件。
比如我期待字典這樣:
{ "Message 1":
{ 1: "Hello",
2: "Hi",
3: "Blah\nHah"
},
"Message 2":
{ 1: "Hi",
2: "How's it going",
3: "Great.",
4: "Yep"
}
}
但我結束了:
{ "Message 1":
{ 1: "Hi",
2: "How's it going",
3: "Great.",
4: "Yep"
},
"Message 2":
{ 1: "Hi",
2: "How's it going",
3: "Great.",
4: "Yep"
}
}
感謝所有幫助
您是否嘗試過使用[configparser](http://docs.python.org/library/configparser.html)庫? – 2012-01-10 15:02:04