从某处接收一个字符串,字符串是一系列参数。参数由空格分隔。该任务将字符串解析为参数列表,所有参数都是字符串类型。
例如:
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是否有一种优雅的方式来完成这项工作?
PS。我不认为正则表达式可以解决这个问题。
答案 0 :(得分:8)
>>> 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']
您可以使用shlex.shlex
function创建可自定义的解析器,然后通过设置其属性来更改其行为。例如,您可以将.whitespace
属性设置为', \t\r\n'
,以允许逗号分隔单词。然后只需将shlex
实例转换回列表即可拆分输入。