Python中查找并替换含location_ids的方括号子串
替换字符串中包含特定关键词的方括号子串
完全可以实现,用正则表达式就能精准匹配并替换所有包含u'location_ids'的方括号子串,具体方案如下:
正则匹配模式
使用非贪婪匹配的正则表达式,确保只捕获单个包含目标关键词的方括号片段:
\[.*?u\'location_ids\'.*?\]
各部分含义:
\[:转义匹配左方括号(避免被正则解析为字符组).*?:非贪婪匹配任意字符,直到找到目标关键词u\'location_ids\':精准匹配目标关键词(转义单引号避免语法冲突).*?:继续非贪婪匹配,直到遇到右方括号\]:转义匹配右方括号
完整Python示例代码
import re # 原始字符串 txt = """{u'lang': u'en_US', u'tz': u'Canada/Eastern', u'uid': 1, u'dashboard_merge_domains_contexts': False, u'group_by': [], u'params': {u'action': 315}} domain="[[u'state', u'!=', u'done'], [u'state', u'!=', u'cancel'], [u'state', u'!=', u'draft'], [u'location_ids', u'ilike', u'WH07'], [u'state', u'!=', u'done'], [u'state', u'!=', u'cancel'], [u'state', u'!=', u'draft'], [u'location_ids', u'=', u'WH123']]""" # 自定义替换后的新字符串 new_substr = "[u'location_ids', u'in', u['WH07', 'WH123']]" # 执行替换操作 processed_txt = re.sub(r'\[.*?u\'location_ids\'.*?\]', new_substr, txt) # 输出结果 print(processed_txt)
注意事项
- 采用非贪婪模式
.*?是关键,能避免误匹配从第一个左方括号到最后一个右方括号的大段内容,确保只替换单个包含目标关键词的方括号子串 - 如果你的新字符串包含特殊字符(如
[、]、\),需要在正则替换时对这些字符进行转义,或者使用re.escape()处理新字符串
内容的提问来源于stack exchange,提问作者ASD
相关产品推荐
相关产品推荐

