Токенизируйте строку, сохраняя в кавычках - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть следующая строка:

"'string' 4 '['RP0', 'LC0']' '[3, 4]' '[3, '4']'"

Я использую shlex.split для токенизации строки следующим образом:

for element in shlex.split("'string' 4 '['RP0', 'LC0']' '[3, 4]' '[3, '4']'"):
    print(element)

И вот вывод:

string
4
[RP0, LC0]
[3, 4]
[3, 4]

Но я ищу следующий вывод:

string
4
['RP0', 'LC0']
[3, 4]
[3, '4']

Это выполнимо?

1 Ответ

0 голосов
/ 29 апреля 2020

Я не знаю, думаю, что любая библиотека, такая как shlex, была бы такой гибкой, и регулярное выражение не было бы простым, я думаю, я предпочитаю избегать вложенного регулярного выражения.

Так что мы можем попробовать это в относительно простой способ в чистом python, но это далеко от pythoni c ответ:

myInput = "'string' 4 '['RP0', 'LC0']' '[3, 4]' '[3, '4']'"
processedInput = ""
word_iterator = myInput.__iter__()
for idx, char in enumerate(word_iterator):
    if char == "'":
        continue

    processedInput+=char

    if char == '[':
        next_char=word_iterator.__next__()
        while(next_char != "]"):
          processedInput+=next_char
          next_char=word_iterator.__next__()
        else:
          processedInput+=next_char

ВЫХОД

string 4 ['['RP0', 'LC0']] [3, 4] [3, '4']
...