【发布时间】:2017-04-22 20:40:06
【问题描述】:
如何在使用 shlex.split() 时保留“带空格的值”周围的引号?
s = "SOME_VAR=\"value with spaces\" VAR2=value2"
shlex.split(s)
['SOME_VAR=value with spaces', 'VAR2=value2']
谢谢
【问题讨论】:
-
似乎 shlex 是一个实际的解析器,所以你必须转义特殊字符。例如,这会正确解析:
"SOME_VAR=\\\"value\\ with\\ spaces\\\" VAR2=value2"。我不确切知道你怎么能做和逃避这些字符,因为你几乎必须创建一个解析器并重新实现 shlex... -
您希望保留报价的原因是什么?如果该值包含最初引用的空格,是否足以假设?
-
Salt 使用 shlex.split 来拆分参数以调用 msiexec。 github.com/saltstack/salt/blob/develop/salt/modules/… 我正在尝试向 msiexec 提供一个键/值对,其中值可能包含空格。如果引号被删除,msiexec 将第一个空格之后的所有内容视为参数并失败。