python除了在引用时除以空格分隔字符串,也允许转义单引号和双引号

时间:2015-02-12 00:03:25

标签: python regex escaping whitespace quote

首先:我知道在这些问题上有很多关于stackoverflow的例子,但我还没有找到我需要的确切结果。

我有以下程序

import re

def magic(string):     
    return [i.strip('"').strip("'") for i in re.split(r'(\s+|(?<!\\)".*?(?<!\\)"|(?<!\\)\'.*?(?<!\\)\')', string) if i.strip()] 

myString = """ function_name param1 param 2 "param 3" "param \"4 lorem ipsum\""  'param 5' 'param \'6 lorem ipsum\'' """
print magic(myString)

我希望这是输出:

['function_name', 'param1', 'param', '2', 'param 3', 'param "4 lorem ipsum"', 'param 5', "param '6 lorem ipsum'"]

但我明白了:

['function_name', 'param1', 'param', '2', 'param 3', 'param ', '4', 'lorem', 'ipsum', '', 'param 5', 'param ', '6', 'lorem', 'ipsum', '']

因此Python在转义方面存在问题。 当我琐事逃脱我的绳索..

myString = """ function_name param1 param 2 "param 3" "param \\\"4 lorem ipsum\\\""  'param 5' 'param \\\'6 lorem ipsum\\\'' """

我明白了:

['function_name', 'param1', 'param', '2', 'param 3', 'param \\"4 lorem ipsum\\', 'param 5', "param \\'6 lorem ipsum\\"]

=&GT;一些引用消失了,无论如何我不想写三个\来逃避引用。

我希望有人可以帮助我改进这项功能

0 个答案:

没有答案