【发布时间】:2015-08-20 22:14:32
【问题描述】:
所有,我正在尝试解析来自具有以下特征的用户指令(存储为单行字符串):
- 第一个单词是命令 - 不允许有空格,但可以有前导或尾随空格,具体取决于用户的纪律性
- 命令后的可选参数,用逗号或空格(或两者)分隔参数
- 双引号中的输入被视为单个参数,因此双引号内的逗号不用于分隔参数(用于创建列表)。
输入和所需解析的示例(显示为字典);单引号开始和结束示例,并且不是要解析的字符串的一部分..:
'start'
{'cmd':'start'}
' stop '
{'cmd':'stop'}
'start now'
{'cmd':'start','arg1':'now'}
' start later forward , back '
{'cmd':'start','arg1':'later','arg2':'forward','arg3':'back}
'start tomorrow ,back, "Lucile, Michael " Oscar'
{'cmd':'start','arg1':tomorrow','arg2':'back','arg3':'Lucile, Michael','arg4':'Oscar'}
我在 PY3.4 上,但关键问题是 RegEx,不需要特定于 python 的实现。
【问题讨论】:
-
澄清一下,您是想将其作为命令行参数还是(我认为这就是您的意思)作为用户通过
input()之类的字符串输入?是否有必要在双引号参数中允许转义双引号? -
我的python变量是一个字符串,没有使用input();另外,出于好奇,无论如何 input() 不会返回字符串吗?不允许转义双引号。