如何以字典形式解析文本文件并将其放入python中的字典?

时间:2010-12-01 16:24:36

标签: python parsing

我想要一个包含以下形式的文本文件:

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

并将其放入真正的字典中。 我已经在这里乱砍了几个小时并且已经走得很远了。 我认为解决方案很简单,但我发现在互联网上没有任何用处。 任何帮助将不胜感激。

4 个答案:

答案 0 :(得分: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')}

答案 1 :(得分: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序列化的东西,具体取决于确切的需求。

答案 2 :(得分: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 :(得分:0)

通过使用eval语句,您可以轻松地执行所需操作。但是,如果文件被篡改,可能会导致安全问题。我非常推荐使用Pickle将您的词典存储到文件中。