You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用shlex.split拆分字符串时带引号子串未完整保留的问题

问题原因

shlex模块默认只识别英文半角引号("和')作为引号分隔符,你用的是中文全角引号(“”),所以shlex不会把它们当作引号来处理,自然会将引号内的空格视为拆分点。

解决方案

有两种可行的处理方式:

方法1:修改shlex的引号识别集合

通过shlex.shlex类自定义引号字符,把中文左右引号加入识别列表:

import shlex

target_str = '“COBRA COMMANDER” Section 4Q/C'
# 初始化shlex解析器,开启posix模式
lexer = shlex.shlex(target_str, posix=True)
# 添加中文引号到识别集合
lexer.quotes = '"' "'" '“' '”'
# 解析得到结果
split_result = list(lexer)
print(split_result)

运行结果:

['“COBRA COMMANDER”', 'Section', '4Q/C']

方法2:替换中文引号为英文引号

如果不需要保留原有的中文引号,可以先把字符串里的中文引号替换成英文半角引号,再用shlex.split:

import shlex

target_str = '“COBRA COMMANDER” Section 4Q/C'
# 替换中文引号为英文双引号
converted_str = target_str.replace('“', '"').replace('”', '"')
split_result = shlex.split(converted_str)
print(split_result)

运行结果:

['COBRA COMMANDER', 'Section', '4Q/C']

内容的提问来源于stack exchange,提问作者easythrees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:24:53