如何提取引号间内容并替换(已掌握文件读写操作)
提取并替换文本引号内内容的方法
提取引号内的内容
用Python的re模块(正则表达式)就能轻松搞定,核心是用非贪婪匹配精准捕获每一对引号之间的内容:
- 提取双引号内内容:
import re text = 'I love "Python", and "regular expressions" are useful' quoted_contents = re.findall(r'"(.*?)"', text) print(quoted_contents) # 输出: ['Python', 'regular expressions']
- 提取单引号内内容:把正则里的双引号换成单引号即可:
r"'(.*?)'" - 同时提取单/双引号内容:用
r'["\'](.*?)["\']',注意转义引号
替换引号内的内容
同样用re.sub()方法,支持固定内容替换,也支持自定义逻辑替换:
- 固定内容替换
import re text = 'Hello "foo", hi "bar"' new_text = re.sub(r'"(.*?)"', '"REPLACED_CONTENT"', text) print(new_text) # 输出: Hello "REPLACED_CONTENT", hi "REPLACED_CONTENT"
- 自定义逻辑替换(比如把引号内内容转大写)
import re def custom_replace(match): # match.group(1)就是捕获到的引号内原内容 return f'"{match.group(1).upper()}"' text = 'Hello "foo", hi "bar"' new_text = re.sub(r'"(.*?)"', custom_replace, text) print(new_text) # 输出: Hello "FOO", hi "BAR"
注意事项
- 如果文本里有嵌套引号(比如
He said: "She told me 'hello'"),简单正则会失效,这种场景需要用更复杂的语法或者专门的解析库处理 - 若处理中文引号(“”/‘’),直接把正则里的引号替换成对应的中文引号即可,比如
r'“(.*?)”'
内容的提问来源于stack exchange,提问作者Sunken
相关产品推荐
相关产品推荐

