可以使用正则表达式的re.sub()
函数
来替换单引号内的双引号。首先,我们需要定义一个正则表达式模式以匹配包含双引号的单引号字符串。可以使用反斜杠转义引号来匹配字符本身,如下所示:
import re
s = "He said, 'I am \"iron man\".'"
pattern = r"'.*?\".*?'"
new_s = re.sub(pattern, lambda x: x.group().replace('"', "'"), s)
print(new_s)
He said, 'I am 'iron man'.''
在上面的代码中,我们使用了一个lambda函数作为re.sub()的第二个参数,将找到的模式匹配项传递给函数,并使用replace()函数来将其中的双引号替换为单引号。注意,这里使用了非贪婪模式(.*?),以确保只匹配一个双引号。
另外,如果您希望替换所有单引号字符串中的双引号,而不是只替换第一个匹配项,请将re.sub()函数的第三个参数设置为count参数的最大值,如下所示:
import re
s = "He said, 'I am \"iron man\".' 'She said, \"I like him!\".'"
pattern = r"'.*?\".*?'"
new_s = re.sub(pattern, lambda x: x.group().replace('"', "'"), s, count=0)
print(new_s)
He said, 'I am 'iron man'.' 'She said, 'I like him!'.'