如何按空格拆分字符串但忽略单双引号内的内容?
按空格拆分字符串但忽略引号内空格的实现方法
需求:将输入字符串按连续空格拆分为列表,单引号或双引号包裹的内容作为单个元素,忽略引号内部的空格。例如输入:me you "us and them" 'everyone else' them
拆分后得到:
- me
- you
- us and them
- everyone else
- them
方法一:使用Python的shlex模块
shlex模块专门用于解析类Shell的字符串,原生支持识别单、双引号,自动处理引号内的空格,同时合并外部连续空格,完全符合需求:
import shlex input_str = 'me you "us and them" \'everyone else\' them' split_result = shlex.split(input_str) # 输出结果 for item in split_result: print(item)
执行后输出:
me you us and them everyone else them
方法二:使用正则表达式
如果不想依赖shlex模块,可以用正则表达式匹配引号内内容和非空白序列:
import re input_str = 'me you "us and them" \'everyone else\' them' # 正则模式:匹配双引号内容、单引号内容、非空白字符序列 pattern = r'"([^"]*)"|\'([^\']*)\'|(\S+)' matches = re.findall(pattern, input_str) # 提取有效分组内容 split_result = [group[0] or group[1] or group[2] for group in matches] # 输出结果 for item in split_result: print(item)
此正则会依次匹配双引号包裹的内容、单引号包裹的内容,最后匹配不含空格的连续字符,通过提取分组内容得到拆分后的列表。
内容的提问来源于stack exchange,提问作者sthames42
相关产品推荐
相关产品推荐

