首页 > 解决方案 > 将空格字符串拆分为列表,但不拆分引号中的空格,并且还允许在 Python 中的引号中包含特殊字符(如 $、% 等)

问题描述

s = 'hello "ok and @com" name'

s.split()

有没有办法将其拆分为一个列表,该列表可以拆分空格字符,但也不能拆分引号中的白色字符并允许引号中的特殊字符。

["hello", '"ok and @com"', "name"]

我希望它能够像这样输出,但无论如何也允许其中的特殊字符。

有人可以帮我弄这个吗?

(我查看了与此相关的其他帖子,但在我测试时这些帖子不允许使用特殊字符。)

标签: pythonstring

解决方案


你可以用re.split(). 正则表达式模式来自:https ://stackoverflow.com/a/11620387/42346

import re

re.split(r'\s+(?=[^"]*(?:"[^"]*"[^"]*)*$)',s) 

回报:

['hello', '"ok and @com"', 'name']

正则表达式的解释:

\s+ # 匹配空格
(?= # 开始前瞻
   [^"]* # 匹配任意数量的非引号字符
   (?: # 开始非捕获组,重复零次或多次
      "[^"]*" # 一段引用的文本
      [^"]* # 任意数量的非引号字符
   )* # 结束非捕获组
   $ # 匹配字符串的结尾
) # 结束前瞻

推荐阅读