我的导师巴里总是因为我忘记在逗号、等号后面添加空格以及在文件末尾留下太多行而踢我。我想练习一些 Python 并编写一个解析器来检查我的文件,然后再将它们呈现给他。
#BarryParser v0.1
from re import findall, search
def comma_checker(line, lineno):
""" Checks commas have a space after them """
split_line = line.split(', ')
for string in split_line:
found_error = findall('.*,.*', string)
if found_error:
print "BARRY ISSUE DETECTED: COMMA ERROR LINE: %s: %s" % (lineno, line)
def equals_checker(line, lineno):
split_line = line.split(' = ')
for string in split_line:
found_error = findall('.*==?.*', string)
if found_error:
print "BARRY ISSUE DETECTED: EQUALS ERROR LINE: %s: %s" % (lineno, line)
def too_many_blank_lines(lines):
"""if the last line is a new line and the line before is also a new line,
rasises barry issue over too many blank lines
"""
last_line = lines[len(lines)-1]
second_to_last_line = lines[len(lines)-2]
if last_line == "\n" and second_to_last_line == "\n":
print "BARRY ISSUE DETECTED: TOO MANY BLANK LINES AT END OF TEXT"
elif search('\t*\n{1}', last_line)and search('\t*\n{1}', second_to_last_line):
print "BARRY ISSUE DETECTED: TOO MANY BLANK LINES AT END OF TEXT"
elif search('\t*\n{1}', second_to_last_line) and last_line == "\n":
print "BARRY ISSUE DETECTED: TOO MANY BLANK LINES AT END OF TEXT"
def main():
file = open("test.txt")
line_no = 0
lines = file.readlines(100000)
too_many_blank_lines(lines) #CHECK FOR BLANK LINES AT END OF TEXT
for line in lines:
line_no +=1
if not line == "\n":
if not line[:1] == "#":
comma_checker(line, line_no) #CHECK COMMAS ARE DONE RIGHT
equals_checker(line, line_no) #CHECK EQUALS HAVE SPACES AFTER & BEFORE
if __name__ == '__main__':
main()
它将解析 python 文件。问题是,我不知道如何让 equals 位以相同的方式处理 == 和 = 。
最佳答案
看看 pep8 模块。这会检查您的代码是否符合 pep8 编码标准。
参见:http://www.python.org/dev/peps/pep-0008/
这是示例输出
thenh@localhost:~> pep8 *.py
1.py:11:1: W293 blank line contains whitespace
1.py:14:80: E501 line too long (81 characters)
1.py:24:1: E302 expected 2 blank lines, found 1
1.py:37:23: W291 trailing whitespace
1.py:90:27: E201 whitespace after '['
1.py:116:36: E701 multiple statements on one line (colon)
1.py:144:9: E303 too many blank lines (2)
2.py:22:1: W391 blank line at end of file
3.py:75:29: E231 missing whitespace after ','
关于python - 解析Python文件以检查它是否符合某些规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373526/