Python中如何程序化构建含转义字符的字符串并匹配目标?
问题分析与解决
首先明确目标字符串string0的实际内容:
当Python解析后,string0的真实值是:
"case when \"LETTER\" in ('a','b') then \"LETTER\" else 'other letter' end"
(注:原代码里的\"是HTML转义的双引号,对应Python字符串中的\")
你的代码生成的string部分存在转义错误:'(\\\''+'\\\',\\\''.join(a_list)+'\\\')'这段代码会生成(\'a\',\'b\'),也就是单引号前多了不必要的反斜杠,这直接导致string2和string0内容不一致,所以==判断返回False。
修正方案
方案1:使用f-string(推荐,代码简洁易读)
a_list = ['a','b'] in_part = "','".join(a_list) string2 = f'case when "LETTER" in (\'{in_part}\') then "LETTER" else \'other letter\' end'
方案2:修正原代码的转义逻辑
直接生成不带多余反斜杠的括号部分:
a_list = ['a','b'] string = f"('{ "','".join(a_list) }')" string2 = 'case when "LETTER" in ' + string + ' then "LETTER" else \'other letter\' end'
验证:此时执行string0 == string2会返回True。
内容的提问来源于stack exchange,提问作者Vlad Sladariu Negulescu
相关产品推荐
相关产品推荐

