На практике вы хотите сделать что-то с данными, и нужно разобрать его дальше. Если ваш файл 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