У меня есть ситуация, когда пользователь может вводить команды с необязательными парами значений ключей, а значение могут содержать пространства. = знак и значения имеют пространство: < /p>
"cmd=create-folder name=SelfServe - Test ride"
"cmd=create-folder name=SelfServe - Test ride server=prd"
"cmd=create-folder name=cert - Test ride server=dev site=Service"
"cmd=create-folder name=cert - Test ride server=dev site=Service permission=locked"
< /code>
Требование:
Я пытаюсь проанализировать эту строку и разделить на словарь на основе ключа и значения, присутствующего на строке. < /p>
Если пользователь введет первую форму оператора, это WOLD производит словарь, подобный: < /p>
query_dict = {
'cmd' : 'create-folder',
'name' : 'selfserve - Test ride'
}
< /code>
Если пользователь введет вторую форму оператора, которая будет создавать /добавить дополнительную клавишу /pare < /p>
query_dict = {
'cmd' : 'create-folder',
'name' : 'selfserve - Test ride',
'server' : 'prd'
}
< /code>
Если пользователь введет третью форму оператора, которая бы создала < /p>
query_dict ={
'cmd' : 'create-folder',
'name' : 'cert - Test ride',
'server' : 'dev',
'site': 'Service'
}
Форма образует словарь с ключом/значением, разделенным, как ниже
query_dict ={
'cmd' : 'create-folder',
'name' : 'cert - Test ride',
'server' : 'dev',
'site': 'Service',
'permission' : 'locked' }
< /code>
-Idea-это проанализировать строку, где клавиша и значение разделены = символ и где значения могут иметь одно или несколько пробелов, и извлечь соответствующую пару клавиш /значения. < /p>
Я попробовал несколько методов, чтобы соответствовать, но не смог выяснить единый общий шаблон регулярного выражения, который может соответствовать /извлекать любую строку, где у нас есть такой вид шаблона < /p>
Ваша помощь. < /p>
Я попробовал несколько карт шаблонов, основанные на различном возможном пользовательском вводе, но это не масштабируемый подход.
Пример: < /p>
i Создал три шаблона, чтобы соответствовать трем разнообразным пользовательским вводу, но было бы неплохо, если бы у меня был один общий шаблон, который может соответствовать любой комбинации значений Key = в строке (я жестко кодирую ключ в шаблоне, который не является идеальным
'(cmd=create-folder).*(name=.*).*' ,
'(cmd=create-pfolder).*(name=.*).*(server=.*).*',
'(cmd=create-pfolder).*(name=.*).*(server=.*).*(site=.*)'
Подробнее здесь: https://stackoverflow.com/questions/749 ... include-on
Разделите каждое появление паров key = value в строке, где значение включает в себя одно или несколько пробелов ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение