2010-12-01 81 views
0

我想利用包含表單的一些文本文件:如何解析字典形式的文本文件並將其放入Python中的字典中?

{('q0','a'):('q0','a','R'), 
('q0','b'):('q0','a','R'), 
('q1',' '):('q1',' ','L')} 

,並把它變成一個真正的字典。 我一直在黑客這個幾個小時,已經非常遠。 我認爲解決方案很簡單,但我在互聯網上找不到任何有用的東西。 任何幫助,將不勝感激。

+0

剛剛`eval`怎麼樣? – Gabe 2010-12-01 16:25:28

+0

你的例子看起來像JSON。你的文本文件通常採用什麼形式? – eksortso 2010-12-01 18:38:50

回答

0

如果該文件包含描述字典有效的Python代碼,只需使用eval

>>> value = "{('q0','a'):('q0','a','R'),('q0','b'):('q0','a','R'),('q1',' '):('q1',' ','L')}" 
>>> value 
"{('q0','a'):('q0','a','R'),('q0','b'):('q0','a','R'),('q1',' '):('q1',' ','L')}" 
>>> d = eval(value) 
>>> type(d) 
<type 'dict'> 
>>> d 
{('q1', ' '): ('q1', ' ', 'L'), ('q0', 'a'): ('q0', 'a', 'R'), ('q0', 'b'): ('q0', 'a', 'R')} 

不過,我不會建議周圍傳遞信息的方法(Python程序之間,說的)。爲此,我會使用類似pickle的東西,或者可能使用json序列化,具體取決於確切的需求。

0

嘗試使用exec聲明:

>>> d="""{('q0','a'):('q0','a','R'), 
... ('q0','b'):('q0','a','R'), 
... ('q1',' '):('q1',' ','L')}""" 
>>> exec("myDict=%s" % d) 
>>> myDict 
{('q1', ' '): ('q1', ' ', 'L'), ('q0', 'a'): ('q0', 'a', 'R'), ('q0', 'b'): ('q0 
', 'a', 'R')} 
>>> 
3
>>> ast.literal_eval('''{('q0','a'):('q0','a','R'), 
... ('q0','b'):('q0','a','R'), 
... ('q1',' '):('q1',' ','L')} 
... ''') 
{('q1', ' '): ('q1', ' ', 'L'), ('q0', 'a'): ('q0', 'a', 'R'), ('q0', 'b'): 
    ('q0', 'a', 'R')} 
0

最簡單的方式做你想做的是通過使用eval語句。但是,如果文件被篡改,可能會導致安全問題。我強烈建議使用Pickle將您的字典存儲到文件中。

相關問題