парсинг текста "DA23.3445 DC15.445" на ["DA", "23.3445", "D C", "15.445"] - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь разобрать текст «DA23.3445 DC15.445» на [«DA», «23.3445», «D C», «15.445»] с помощью следующего кода:

    Apar = srange("A-Z")
    AApar = Apar*2
    ffval = real = Combine(Word(nums) + '.' + Word(nums))
    parTup = AApar + ffval

    Text = "DA23.3445 DC15.445"

    print(parTup.parseString(Text))

и получите ошибку «pyparsing.ParseException: Expected W: (0123 ...), found 'D' (at char 0), (line: 1, col: 1)»

Конечно, первая буква - «D», и это тоже в моих правилах. ?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Теперь я попробовал:

    AApar = Word(srange("[A-Z]"), exact=2)
    ffval = real = Combine(Word(nums) + '.' + Word(nums))
    parTup = AApar + ffval
    parTups = OneOrMore(parTup)
    Text = "DA23.3445 DC15.445 DJ76.893"
    print(parTups.parseString(Text))

, который скомпилирован, но я все равно получаю только один кортеж на строку:

DA14.00387  DC14.00063  DJ14.00225  DL14.00225  ZI47
['DA', '14.00387']

вместо чего-то вроде:

['DA', '14.00387']['DC', '14.00063']['DJ', '14.00225']['DL', '14.00225']['ZI', '47']
0 голосов
/ 19 июня 2020

Спасибо большое, все работает так, как я хотел! Теперь: я хотел бы разобрать «один или несколько» из этих кортежей. Я пробовал с «parTups = parTup +»:

AApar = Word(srange("[A-Z]"), exact=2) 
ffval = real = Combine(Word(nums) + '.' + Word(nums)) 
parTup = AApar + ffval 
parTups = parTup+ 
Text = "DA23.3445 DC15.445 DJ76.893"

Но я получил ошибку:

parTups = parTup+
                 ^

SyntaxError: недопустимый синтаксис

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...