gpt4 book ai didi

python - 解析参数字符串的最佳 pythonic 方法?

转载 作者:行者123 更新时间:2023-11-28 20:26:19 26 4
gpt4 key购买 nike

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

例如:

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 是否有一种优雅的方式来完成这项工作?

附言。我不认为正则表达式可以解决这个问题。

最佳答案

使用 shlex.split() function :

>>> 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 实例转换回列表以拆分输入。

关于python - 解析参数字符串的最佳 pythonic 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com