文件中的关键字计数

时间:2018-09-02 08:36:48

标签: python

我正在尝试计算is文件中的关键字,但是我编写的代码也计算了字符串中出现的关键字。 如何区分实际关键字和字符串关键字?例如:withinfrom collections import Counter import keyword count = {} scode = input("Enter the name of Python source code file name :") with open(scode,'r') as f: for line in f: words = line.split() for i in words: if(keyword.iskeyword(i)): count[i]= count.get(i,0)+1 print(count) 是关键字,但是您也可以在注释和用户输入字符串中发现它们。这是我尝试过的:

rawQuery()

1 个答案:

答案 0 :(得分:4)

您可以使用ast.parse来解析代码,创建一个ast.NodeTransformer子类来清除所有字符串节点(无需清除注释,因为注释已被ast.parse自动忽略),安装astunparse package以将节点转换回源代码,然后计算关键字:

import ast
import astunparse
import keyword
import re

class clear_strings(ast.NodeTransformer):
    def visit_Str(self, node):
        node.s = ''
        return node

n = ast.parse('''
a = 'True'
assert False
# [[] for _ in range(9)]
"""if"""
''')

clear_strings().visit(n)
print(sum(map(keyword.iskeyword, re.findall(r'\w+', astunparse.unparse(n)))))

此输出:2(因为仅将assertFalse计为关键字)