【发布时间】:2011-10-09 00:05:28
【问题描述】:
可能重复:
Split a string by spaces — preserving quoted substrings — in Python
给定以下字符串:
term1 term2 "the second term has spaces" term3 bad term 4
什么正则表达式会给我这个列表:
["term1", "term2", "the second term has spaces", "term3", "bad", "term", "4"]
【问题讨论】:
-
所以,这家伙想知道括号而不是引号。但是,由于可能的递归,正则表达式并不是真正的工具。有关更多信息,请参阅 this SO question 和 this SO question。但是,如果您不关心其中的复杂性,而只是想要描述的场景,那么这些可能有点矫枉过正。
-
如果您不需要正则表达式,我建议您根据引号将其分成几部分,然后用空格分隔符将字符串的剩余部分分开,然后放引用一切。无论如何,这似乎比使用正则表达式更容易。
-
似乎这个问题已经在别处得到了回答:stackoverflow.com/questions/79968/…
-
@Nightfirecat 这不是一个简单的方法:
'"test test" test test "test test"'.split('"')和'test test "test test" test test'.split('"')都会留下 3 个未加引号的“测试测试”,并带有一些额外的空格和(在第一种情况下)空字符串,所以只分解那些一开始没有被引用的不是那么简单。