在实践中你会想要做东西与数据,以及需要进一步解析它。如果你的文件test
看起来像
http://example.com dog
http://example.com/å%20ä%20ö/ foo
http://google.com bar
一个pyparsing
脚本会删除坏线,像这样
from pyparsing import *
ParserElement.setDefaultWhitespaceChars(" \t")
EOL = LineEnd()
ascii = u''.join(unichr(x) for x in xrange(33,127))
words = Word(ascii)
good_line = Group(ZeroOrMore(words) + EOL)
bad_line = SkipTo(EOL,include=True)
blocks = good_line | bad_line.suppress()
grammar = ZeroOrMore(blocks) + StringEnd()
P = grammar.parseFile("test")
print P
这将使作为输出:
[['http://example.com', 'dog', '\n'], ['http://google.com', 'bar']]
的优势,以其他方法(哪些工作正常,并回答问题),因为你现在有一个很好的分析树来进一步处理数据。这个想法是写一个语法,而不是解析器,对于任何可能在第一次启动时变得更加复杂的任务。
当你说“完整的ASCII字符集”,你的意思是它包括从0到127的每个字节值?因此,只要没有字节是128或更高的字符,行就可以包含删除,垂直标签,表单提要,空字节等等。 – ruakh 2012-01-27 15:44:18