当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《shlex.split()和re.split()有什么区别?》经验,为你挑选了1个好方法。

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



1> Wayne Werner..:

shlex.split()被设计为像shell的分裂机制一样工作.

这意味着做一些事情,比如尊重报价等.

>>> 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是不可能复杂的,如果它甚至可能的话.

要真正看到两者之间的差异,你可以随时使用Source,Luke:

>>> re.__file__
'/usr/lib/python3.5/re.py'
>>> shlex.__file__
'/usr/lib/python3.5/shlex.py'

在你最喜欢的编辑器中打开这些文件并开始探索,你会发现它们的运行方式完全不同.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有