使用Regex在python文件中提取字典变量名称

时间:2015-08-12 11:31:24

标签: python regex python-3.x

我需要建议来解决这个问题,我很难过,并不知道从哪里开始。 我不想要代码我只需要建议

问题如下:

  

使用正则表达式提取所有得到的变量名   分配给字典或从位于Python程序中设置文字   在文件code.py中。 Python变量匹配正则表达式\ w +   在Python中(请参阅有关\ w的文档)。字典和集   文字以一个开放的波浪形支撑({)开始。

     

例如,给定这个Python程序:

     

code.py

# Here is a Python file.
names = {}
foo = []
names[0] = 12
christmas ={
  'tree': 'green',
  'candy cane': 'red and white'
}

def yes():
  return "yes"
     

你的程序应该产生这个输出:

names
christmas
     

变量名称应按照它们在文件中出现的顺序打印出来。 Python代码在语法上是有效的,但不一定是可执行的而没有错误。

所以我有这个code.py由上面的代码和我的新文件program.py组成,我必须读取code.py的内容并输出所有字典的变量名。这意味着如果要更改code.py并在其中添加更多字典,它仍将按顺序输出所有字典。

关于什么会有什么帮助的解释!

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式

(\w*)\s*=\s*{(?:.|\n)*?}

如何

(\w*) #match the dict name (any alphanumeric character and _ ) and capture it
\s*=\s* #match '=' with any amount of space around it
{ # match '{' 
(?:.|\n)*? # match any dict defintion over couple of lines
} # match '}' 

您可以查看here