首先:我知道在这些问题上有很多关于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;一些引用消失了,无论如何我不想写三个\来逃避引用。
我希望有人可以帮助我改进这项功能