Max*_*Max 2 python string parsing
从某处接收一个字符串,字符串是一系列参数.参数由空格分隔.该任务将字符串解析为参数列表,所有参数都是字符串类型.
例如:
input : "3 45 5.5 a bc"
output : ["3","45","5.5","a","bc"]
Run Code Online (Sandbox Code Playgroud)
如果需要传输一个包含空格的字符串,那么事情变得有点复杂,用于"引用.
input: "3 45 5.5 \"This is a sentence.\" bc"
output: ["3","45","5.5","This is a sentence.","bc"]
Run Code Online (Sandbox Code Playgroud)
但如果句子恰好包含引号呢?使用转义字符:\"- > ",\\- >\
input: "3 45 5.5 \"\\\"Yes\\\\No?\\\" it said.\" bc"
output: ['3','45','5.5','"Yes\\NO?" it said.','bc']
Run Code Online (Sandbox Code Playgroud)
python是否有一种优雅的方式来完成这项工作?
PS.我不认为正则表达式可以解决这个问题.
>>> 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']
Run Code Online (Sandbox Code Playgroud)
您可以使用该shlex.shlex函数创建可自定义的解析器,然后通过设置其属性来更改其行为.例如,您可以将.whitespace属性设置', \t\r\n'为允许逗号分隔单词.然后只需将shlex实例转换回列表即可分割输入.