擅长:python、mysql、java
<p>解决办法不错。它看起来很难看,因为问题是丑陋的-你有损坏的数据。它当然简单,优雅,有效。只有当子字符串<code>\\'</code>(这是三个字符,我没有转义任何内容)出现在任何地方,并且只有在连续斜杠的数量为偶数时,它才会失败。所以你的选择是:</p>
<ol>
<li>只需执行当前的操作,但首先检查<code>if r"\\'" in originalstring</code>,如果是,则抛出一个错误。简单,安全,也许可以。在</li>
<li>对<code>(\\\\)+</code>或其他内容使用带否定lookbehind的regex。在</li>
<li>捕获错误并使用错误的属性来决定要替换的字符串的一部分。在</li>
</ol>
<p>查看以下片段:</p>
<pre><code>import json
from json.decoder import JSONDecodeError
s = r'"\'"'
print(s)
try:
print(json.loads(s))
except JSONDecodeError as e:
print(vars(e))
</code></pre>
<p>输出:</p>
^{pr2}$