如何仅按顶级分隔符拆分字符串,兼容引号与括号嵌套场景?
如何仅按顶级分隔符拆分字符串,兼容引号与括号嵌套场景?
我想要写一个函数,它接收一个逗号分隔的字符串,能按照分隔符拆分,但要保留*(可能嵌套的)引号和括号包裹的部分*。比如常见的逗号分隔键值对a=b,c=d,但还有更复杂的场景——比如包含分隔符甚至引号的逗号分隔shell命令,这类情况用简单正则根本搞不定。
一开始我想偷懒用csv模块解决,结果试了个简单例子就翻车了:
>>> s = "a='[1,2,3]',c=d" >>> list(csv.reader([s], delimiter=',', quotechar="'")) # 预期结果: ["a='[1,2,3]'", "c=d"] [["a='[1", '2', "3]'", 'c=d']]
更复杂的情况比如a='[1,"3,14",3]',c="[4,5,6]"我都不敢尝试了。
想问问有没有办法让csv.reader乖乖输出['a=..', 'c=..']这种符合预期的结果?或者有没有其他Python内置的字符串处理能力能搞定这个需求?
备注:内容来源于stack exchange,提问作者frans
相关产品推荐
相关产品推荐

