python - 将空格字符串拆分为列表,但不拆分引号中的空格,并且还允许在 Python 中的引号中包含特殊字符(如 $、% 等)
问题描述
s = 'hello "ok and @com" name'
s.split()
有没有办法将其拆分为一个列表,该列表可以拆分空格字符,但也不能拆分引号中的白色字符并允许引号中的特殊字符。
["hello", '"ok and @com"', "name"]
我希望它能够像这样输出,但无论如何也允许其中的特殊字符。
有人可以帮我弄这个吗?
(我查看了与此相关的其他帖子,但在我测试时这些帖子不允许使用特殊字符。)
解决方案
你可以用re.split()
. 正则表达式模式来自:https ://stackoverflow.com/a/11620387/42346
import re
re.split(r'\s+(?=[^"]*(?:"[^"]*"[^"]*)*$)',s)
回报:
['hello', '"ok and @com"', 'name']
正则表达式的解释:
\s+ # 匹配空格 (?= # 开始前瞻 [^"]* # 匹配任意数量的非引号字符 (?: # 开始非捕获组,重复零次或多次 "[^"]*" # 一段引用的文本 [^"]* # 任意数量的非引号字符 )* # 结束非捕获组 $ # 匹配字符串的结尾 ) # 结束前瞻
推荐阅读
- java - @BeforeClass 方法不在每个类之前运行
- javascript - 如何在 JST 15:00 获得最近的星期日的日期?
- javascript - dropzone.js 选项可能未放置在正确的位置
- python - 无法在 pyspark 中导入 parse_url
- javascript - 如何从数组 JSON 中提取值?
- symfony - 如何使用 Api-Platform 集成 SearchFilter 以在实体的多个属性中进行搜索?
- android - 如何为应用启用电池优化
- android - Flutter 中的 firebase_messaging 插件出错
- html - 使用“let”获取表格行
- php - 对于 PHP 中的这个问题,如何将我的代码重定向到正确的循环中?