Python技术求助:如何仅移除字母之间的双引号?
解决Python字符串中字母间嵌套双引号的删除问题
你现在的需求是:删除字符串里夹在字母中间的双引号,保留其他位置的双引号。
先看你的输入(注意实际Python中要正确定义这类字符串,要么用转义符,要么用单引号包裹):
a = '"comment_text": "Siti Sa"diah I need this for my neighbor needs"'
期望的输出结果:
a = '"comment_text": "Siti Sadiah I need this for my neighbor needs"'
之前用的re.sub(r'[^A-Za-z]', '', a)会删掉所有非字母字符,完全不符合需求;re.sub('"', '', a)会删掉所有双引号,也达不到目的。
正确的方案是用正则精准匹配仅夹在字母中间的双引号,然后替换为空:
import re # 定义原字符串 a = '"comment_text": "Siti Sa"diah I need this for my neighbor needs"' # 替换字母间的双引号 processed_str = re.sub(r'(?<=[A-Za-z])"(?=[A-Za-z])', '', a) print(processed_str)
运行后就能得到你想要的结果:"comment_text": "Siti Sadiah I need this for my neighbor needs"
正则逻辑说明:
(?<=[A-Za-z]):正向肯定后瞻,确保双引号的前一个字符是字母":目标匹配的双引号(?=[A-Za-z]):正向肯定前瞻,确保双引号的后一个字符是字母
这套规则只会定位到夹在字母中间的双引号,其他位置的双引号(比如包裹键值对的)都会被保留。
内容的提问来源于stack exchange,提问作者Johan Klemantan
相关产品推荐
相关产品推荐

