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

2023-12-20

所以我用了shlex.split()最近将命令拆分为参数subprocess.Popen()功能。我记得很久以前我也用过re.split()函数使用指定的特定分隔符分割字符串。有人能指出它们之间的本质区别是什么吗?每个功能最适合什么场景?


shlex.split() is 设计得像外壳的分割机构一样工作 https://docs.python.org/3/library/shlex.html#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如果可能的话,这是不必要的复杂。

要真正看到两者之间的差异,您始终可以使用来源,卢克 http://catb.org/jargon/html/U/UTSL.html:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shlex.split() 和 re.split() 有什么区别? 的相关文章

随机推荐

  • 编辑用户详细信息会创建新用户。设计,Rails 4

    我有一个奇怪的问题 以前创建的表单而不是更新用户详细信息 例如电子邮件或姓名 而是使用给定的详细信息创建新用户 My form 我取自这个代码示例视图 设计 注册 编辑 div class form group div
  • 将计数添加到图例标签

    我正在尝试将计数 百分比添加到饼图的图例标签中 我知道饼图很糟糕 但这不是本文的重点 我想将 Count 的值粘贴到图例上的 Wound Type 标签 但无法弄清楚如何访问以下代码的每次迭代的计数 目标将类似于 裂痕 5 或任何计数 我尝
  • 检查字符串是否不包含另一个字符串

    在 T SQL 中 如何检查一个字符串是否不包含另一个字符串 我有一个nvarchar这可能是 橙子苹果 我想做一个更新 例如 一个列doesn t包含 苹果 如何才能做到这一点 WHERE NOT someColumn LIKE Appl
  • Xcode 自动完成建议 NSArray getter 神秘的“songsAtIndexes”

    我的类中有一个名为 歌曲 的 NSArray 类型的属性 我正在为其创建一个自定义 getter XCode 为我提供了创建方法的选项 songsAtIndexes NSIndexSet indexes 这是什么 为什么 XCode 提供这
  • 在 ViewModel 中获取窗口属性

    我正在构建一个 WPF 应用程序 其中需要从视图模型获取窗口的宽度 高度和位置 我正在使用以下 XAML
  • 无法使用 beautifulsoup 抓取 google 搜索结果

    我想抓取谷歌搜索结果 但每当我尝试这样做时 程序都会返回一个空列表 from bs4 import BeautifulSoup import requests keyWord input Input Your KeyWord url f h
  • ColdFusion:cfspreadsheet 本地化日期格式

    我的问题基本上与this one https stackoverflow com questions 12926719 coldfusion cfspreadsheet reading date incorrectly 但我无法更改 Exc
  • WPF 命中测试矩形区域

    我有一个 WrapPanel 其中包含任意数量的锯齿状大小的元素 我想为我的项目实现拖动选择 如何对一个点进行 HitTest 似乎很明显 但如何找到矩形区域内的所有项目 您可以使用VisualTreeHelper HitTest http
  • XPTY0020:查找树的根:上下文项不是节点

    XSLT 中的这个错误让我难住了 XPTY0020 Finding root of tree the context item is not a node 我的 XSLT 指出错误所在 只是一个普通的旧变量声明
  • 内联 require() 在 requirejs 中工作,但不适用于优化的 almond 构建

    正如标题所示 我的内联 require 调用在非优化的 requirejs 运行中工作 但在使用 grunt 和 almondjs 构建时不起作用 Uncaught Error undefined missing views some vi
  • 为什么我要使用仅限制单一类型的 where 约束?

    所以我在这里查看 MSDN 示例 类型参数的约束 C 编程指南 http msdn microsoft com en us library d5x73970 28v vs 100 29 aspx第一个示例显示了以下泛型类 定义了where单
  • 使用 QPainter 在 Widget 之间画一条线

    我正在开发一个应用程序 我需要能够在两个之间画一条线QWidget对象 我已经尝试了很多事情 但我目前的尝试 我think方向正确 我只是觉得我错过了一些东西 就是拥有包含的小部件 我称之为DrawWidget并持有QGridLayout认
  • 为什么不能使用带有动态参数的匿名函数?

    今天刚遇到这个 匿名函数或方法组不能用作组成部分 动态绑定操作的值 当试图做的时候 static R ifNotNull
  • 如何使用 CodePipeline 删除 S3 中的文件

    我创建了一个 CodePipeline 它从 CodeCommit 存储库获取输入 文件 并将文件部署到 S3 存储桶 当我删除 CodeCommit 存储库中的文件时 管道不会删除相应 S3 存储桶中的文件 简而言之 我希望我的 S3 存
  • SingleChildScrollView“剪切”屏幕

    这是我正在开发的登录页面的屏幕 https ibb co X22g4rc https ibb co X22g4rc 当键盘出现时 它表明存在溢出 这似乎是正常的 https ibb co mzVLJ4f https ibb co mzVLJ
  • jQuery 无法识别 Symfony JSON?

    我正在尝试从 Symfony 获取 JSON 数据 但它似乎无法正常工作 下面是 symfony 代码片段 this gt getResponse gt setHttpHeader Content Type application json
  • 在 Spring Boot 应用程序中更改 autocommit=true 的优点和缺点?

    对我来说 自动提交似乎完全被 Spring Hibernate 配置覆盖 并且这个属性在这样的配置中绝对不起任何作用 但我想以某种方式确认这一点 Spring引导1 5 10 RELEASE版本 数据库是PostgreSQL 9 5 6 数
  • 计算 Python 列表中 True 布尔值的数量

    我有一个布尔值列表 True True False False False True 我正在寻找一种方法来计算数量True在列表中 所以在上面的例子中 我希望返回的是3 我已经找到了查找特定元素出现次数的示例 但是由于我正在使用布尔值 是否
  • 发送 Facebook 请求并获得礼物 FB API

    我已经按照文档在 facebook 上成功实现了我的应用程序的 发送请求 功能here http developers facebook com docs reference dialogs requests 现在 如果用户 A 接受用户
  • shlex.split() 和 re.split() 有什么区别?

    所以我用了shlex split 最近将命令拆分为参数subprocess Popen 功能 我记得很久以前我也用过re split 函数使用指定的特定分隔符分割字符串 有人能指出它们之间的本质区别是什么吗 每个功能最适合什么场景 shle