Python:将字符串转换为对象

Python:将字符串转换为对象,python,eval,Python,Eval,假设我有一个文件以如下格式描述一个图形: Directional:True Simplicity:True { 1:[2,3] 2:[1,3] } 我有一个graph类,定义如下: class Graph: def __init__(self,directional = False,simple=True,Filename=None): self.adjacencyList = {} self.directional = directional sel

假设我有一个文件以如下格式描述一个图形:

Directional:True
Simplicity:True
{
    1:[2,3]
    2:[1,3]
}
我有一个graph类,定义如下:

class Graph:

def __init__(self,directional = False,simple=True,Filename=None):
    self.adjacencyList = {}
    self.directional = directional
    self.simple = simple
    if not Filename:
        _readFile(Filename)
是否仍然可以轻松地将此文件转换为此类。我知道我可以写一个函数来逐行读取文件,然后自己做这件事。但是既然python是一种高度开发的语言,有没有简单的方法来实现它呢


提前感谢。

否,因为该文件不符合任何标准/流行格式。它与YAML很接近,但距离直接解析还不够近。

您可以使用正则表达式在正确的位置添加逗号和方括号,这样您就可以
ast.literal\u eval()
生成的Python对象。自己一行一行地进行操作非常简单。使用正则表达式和
str.split()
解析这些行。您能更具体地说明这一点吗?感谢使用正则表达式,您可以将诸如“2:[3,5,7,8]”之类的行打断为“2”、“3,5,7,8”和“]”。然后可以使用str.split()将字符串“3,5,7,8”拆分为“3”、“5”、“7”和“8”。