解析param字符串的最佳Python方法?

解析param字符串的最佳Python方法?,python,string,parsing,Python,String,Parsing,从某处接收字符串,该字符串是一个参数序列。参数由空格分隔。任务是将字符串解析为参数列表,所有参数都是字符串类型 例如: input : "3 45 5.5 a bc" output : ["3","45","5.5","a","bc"] 如果需要传输一个包含空格的字符串,则使用“引用 input: "3 45 5.5 \"This is a sentence.\" bc" output: ["3","45","5.5","This is a sentence.","bc"] 但是如果这个句子

从某处接收字符串,该字符串是一个参数序列。参数由空格分隔。任务是将字符串解析为参数列表,所有参数都是字符串类型

例如:

input : "3 45 5.5 a bc"
output : ["3","45","5.5","a","bc"]
如果需要传输一个包含空格的字符串,则使用
引用

input: "3 45 5.5 \"This is a sentence.\" bc"
output: ["3","45","5.5","This is a sentence.","bc"]
但是如果这个句子碰巧包含引号呢?使用转义字符:
\“
->
\
->
\

input: "3 45 5.5 \"\\\"Yes\\\\No?\\\" it said.\" bc"
output: ['3','45','5.5','"Yes\\NO?" it said.','bc']
python有一种优雅的方式来完成这项工作吗

另外,我不认为正则表达式可以解决这个问题。

使用:


您可以使用创建一个可自定义的解析器,然后通过设置其属性来更改其行为。例如,您可以将
.whitespace
属性设置为
,\t\r\n'
以允许逗号分隔单词。然后只需将
shlex
实例转换回列表以拆分输入。

模块使用dialec是否使用空格分隔?最后一个输入字符串与反斜杠有点不一致;更正它将帮助您快速获得正确答案。“优雅的解析器”和“垃圾数据”不能同时使用
>>> import shlex
>>> shlex.split("3 45 5.5 a bc")
['3', '45', '5.5', 'a', 'bc']
>>> shlex.split("3 45 5.5 \"This is a sentence.\" bc")
['3', '45', '5.5', 'This is a sentence.', 'bc']
>>> shlex.split("3 45 5.5 \"\\\"Yes\\\\No?\\\" it said.\" bc")
['3', '45', '5.5', '"Yes\\No?" it said.', 'bc']