我的導師Barry總是在踢我忘記在我的逗號之後加上空格,等號和在文件末尾留下太多行。我想練習一些python並編寫一個解析器來檢查我的文件,然後將它們呈現給他。解析一個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文件。問題是,我無法弄清楚如何讓等位處理==和=方法相同。
有幾個工具爲你做這種事情了偉大的工作:?pylint的,PyChecker或PyFlakes(HTTP:/ /stackoverflow.com/q/1428872)。例如,請查看http://pypi.python.org/pypi/pep8爲您完成這些測試。 –
有什麼問題? – lolopop
有問題嗎? :) –