如何解析字符串中的字符串字面量片段并生成Python列表?
提取字符串中双引号包裹的内容生成列表
给定字符串:
s = 'Hello, my name is "Bob" "I am 20 years old" I like to play "football"'
要提取其中所有被双引号包裹的内容,生成目标列表["Bob", "I am 20 years old", "football"],最直接的方法是用正则表达式:
正则表达式实现
import re s = 'Hello, my name is "Bob" "I am 20 years old" I like to play "football"' result = re.findall(r'"([^"]*)"', s) print(result)
运行结果:
['Bob', 'I am 20 years old', 'football']
原理
正则r'"([^"]*)"'的作用:
- 外层的
"匹配字符串中的双引号边界 - 括号内的
[^"]*是捕获组,匹配除双引号外的任意字符([^"]表示排除双引号,*允许匹配0到多个符合条件的字符) re.findall会自动收集所有捕获组的匹配结果,直接得到需要的列表
补充方法:shlex模块
如果需要处理更复杂的类shell格式字符串(比如嵌套引号、转义字符),可以用shlex模块:
import shlex s = 'Hello, my name is "Bob" "I am 20 years old" I like to play "football"' # 分割字符串,引号包裹的内容会被识别为单个元素 tokens = shlex.split(s) # 若要筛选原被引号包裹的内容,可结合原字符串判断(比如包含空格或原位置有引号),但此场景下正则更高效
内容的提问来源于stack exchange,提问作者Omar
相关产品推荐
相关产品推荐

