【发布时间】:2019-05-14 01:52:36
【问题描述】:
来自https://stackoverflow.com/a/53750697/856090的问题的答案。
我们收到一个“输入”字符串。
输入字符串被+s(即\s+\+\s+ regexp)分割成几个“命令”。但是,在拆分引用 + (\+) 时应被忽略。
然后每个命令被空格字符分割成几个“参数”,但引用的 (\) 空格不计入分割,而是成为参数的一部分。
引用\(即\\)变为常规字符\,并且本身不参与引用。
我的解决方案是逐个字符地处理输入字符串,对\、+ 和空白字符具有特殊行为。这很慢而且不优雅。我要求另一种解决方案(例如使用正则表达式)。
我用 Python 3 编写。
例如,
filter1 + \
chain -t http://www.w3.org/1999/xhtml -n error + \
transformation filter2 --arg x=y
变换过滤器3
变成
[['filter1'],
['chain', '-t', 'http://www.w3.org/1999/xhtml', '-n', 'error'],
['transformation', 'filter2', '--arg', 'x=y']]
和
a \+ b + c\ d
变成
[['a', '+', 'b'], ['c d']]
【问题讨论】:
-
请举例说明输入和预期输出(你希望拆分后得到的)。
-
@hygull 示例添加
-
如果没有人解决,我会尝试解决,实际上我现在在移动。明白了。谢谢。
-
最后,我在 rextester 解决了您的移动问题。疯狂令人兴奋的问题。我现在正在写答案。谢谢。
-
如果你得到
[['a', '+', 'b'], ['c', 'd']]代替[['a', '+', 'b'], ['c d']]会怎样。实际上,在第一次拆分操作之后,两者都包含用于分隔的空格,或者我们需要为这种操作传递额外的参数。我也尝试过获得第二个结果,但我得到了第一个结果,但它失败了,所以我猜我们可能需要额外的参数。所以我想,如果你愿意或者我建议的 O/P 没问题,那么我会编辑或者我会尝试其他方法来解决。谢谢。
标签: python string python-3.x parsing split