Я использую действительно аккуратную библиотеку Parsy , чтобы разделить строку (как часть большего определения грамматики). Sep_by прекрасно работает, когда нет встроенных пробелов. В основном я хочу разделить на новую строку и получить все символы, включая встроенные пробелы или любой другой символ Unicode. Примеры:
работает:
>>> parser = letter.at_least(1).concat().sep_by(string('\n'))
>>> parser.parse('Smith\nFirefighter')
['Smith', 'Firefighter']
не работает:
>>> parser.parse('John Smith\nFire fighter')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\code\Parsing\Parsing\env\lib\site-packages\parsy\__init__.py", line 90, in parse
(result, _) = (self << eof).parse_partial(stream)
File "C:\code\Parsing\Parsing\env\lib\site-packages\parsy\__init__.py", line 104, in parse_partial
raise ParseError(result.expected, stream, result.furthest)
parsy.ParseError: expected one of 'EOF', '\n', 'a letter' at 0:4
Я также хотел бы прочитать любой встроенный символ Unicode, например, этот шахматный символ:
>>> parser.parse('hello\u265ethere\nsir')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\code\Parsing\Parsing\env\lib\site-packages\parsy\__init__.py", line 90, in parse
(result, _) = (self << eof).parse_partial(stream)
File "C:\code\Parsing\Parsing\env\lib\site-packages\parsy\__init__.py", line 104, in parse_partial
raise ParseError(result.expected, stream, result.furthest)
parsy.ParseError: expected one of 'EOF', '\n', 'a letter' at 0:5
Любое понимание будет с благодарностью. Благодарю. Также может кто-то с большей репутацией создать тег parsy?