Как обработать обратную косую черту и тильду, появляющиеся в строке, при использовании pyparsing - PullRequest
0 голосов
/ 16 ноября 2018

Мне нужно обрабатывать обратную косую черту и тильду при использовании pyparsing в моем куске кода, и для простоты я использовал printables, но этот код вызывает исключение:

    import string
    import pyparsing as pp
    from pyparsing import *

    log_display = ("[pts\0]")
    log_display1 = ("[~~  ]")

    ut_user = "[" + Word(printables) + "]"

    log = ut_user

    data = log.parseString(log_display)
    print(data.dump())

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 16 ноября 2018

"[pts\0]" не имеет обратной косой черты.У него нулевой характер.Если бы вы хотели строку с обратной косой чертой, r"[pts\0]" выдаст ее.При чтении ввода это, как правило, не будет проблемой.Обработка экранирования строкового литерала применяется только к строковым литералам, а не к пользовательскому вводу.

Проблема с "[~~ ]" не имеет ничего общего с тильдой.Тильда в порядке.Проблема в том, что пространство по стандартам pyparsing.printables не считается печатным.pyparsing.printables - это строка, содержащая все ASCII, печатаемые непробельные символы.Правильный способ решения этой проблемы зависит от того, каких символов вы на самом деле хотите разрешить.

...