Python shlex.split()和re.split()之间有什么区别?

Python shlex.split()和re.split()之间有什么区别?,python,shlex,Python,Shlex,因此,我最近使用了shlex.split()将命令拆分为subprocess.Popen()函数的参数。我记得很久以前,我还使用re.split()函数来拆分指定了特定分隔符的字符串。有人能指出他们之间的本质区别吗?每个函数最适合哪种情况?shlex.split()是 这意味着要做一些事情,比如尊重引用等 >>> shlex.split("this is 'my string' that --has=arguments -or=something") ['this', 'is'

因此,我最近使用了
shlex.split()
将命令拆分为
subprocess.Popen()
函数的参数。我记得很久以前,我还使用
re.split()
函数来拆分指定了特定分隔符的字符串。有人能指出他们之间的本质区别吗?每个函数最适合哪种情况?

shlex.split()是

这意味着要做一些事情,比如尊重引用等

>>> shlex.split("this is 'my string' that --has=arguments -or=something")
['this', 'is', 'my string', 'that', '--has=arguments', '-or=something']
re.split()

>>> re.split('\s', "this is 'my string' that --has=arguments -or=something")
['this', 'is', "'my", "string'", 'that', '--has=arguments', '-or=something']
如果可能的话,尝试定义自己的正则表达式以像shlex.split那样工作是不必要的复杂

要真正了解两者之间的差异,您始终可以:


在您最喜欢的编辑器中打开这些文件并开始四处查看,您会发现它们的操作方式完全不同。

用于拆分字符串?两者都不使用,而是使用内置的
string.split('delimiter')
@TimCastelijns。这在很大程度上取决于要拆分的内容
string.split
是最简单但能力最低的选项。我作为一名专业软件开发人员已经整整8年了,我从未听说过“使用源代码,Luke”。这是纯金的。
>>> re.__file__
'/usr/lib/python3.5/re.py'
>>> shlex.__file__
'/usr/lib/python3.5/shlex.py'