我想利用包含表單的一些文本文件:如何解析字典形式的文本文件並將其放入Python中的字典中?
{('q0','a'):('q0','a','R'),
('q0','b'):('q0','a','R'),
('q1',' '):('q1',' ','L')}
,並把它變成一個真正的字典。 我一直在黑客這個幾個小時,已經非常遠。 我認爲解決方案很簡單,但我在互聯網上找不到任何有用的東西。 任何幫助,將不勝感激。
我想利用包含表單的一些文本文件:如何解析字典形式的文本文件並將其放入Python中的字典中?
{('q0','a'):('q0','a','R'),
('q0','b'):('q0','a','R'),
('q1',' '):('q1',' ','L')}
,並把它變成一個真正的字典。 我一直在黑客這個幾個小時,已經非常遠。 我認爲解決方案很簡單,但我在互聯網上找不到任何有用的東西。 任何幫助,將不勝感激。
如果該文件包含描述字典有效的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序列化,具體取決於確切的需求。
嘗試使用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')}
>>>
>>> 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')}
最簡單的方式做你想做的是通過使用eval語句。但是,如果文件被篡改,可能會導致安全問題。我強烈建議使用Pickle將您的字典存儲到文件中。
剛剛`eval`怎麼樣? – Gabe 2010-12-01 16:25:28
你的例子看起來像JSON。你的文本文件通常採用什麼形式? – eksortso 2010-12-01 18:38:50