首页 > 解决方案 > 如何在Python中用'替换\'?

问题描述

我需要清理文本,其中包含\' 我想在保留单引号的同时删除反斜杠的序列。我试图在反斜杠和引号之前放置反斜杠,但无济于事。对我有什么建议吗?

代码:

import re

samplestr="q\\\'q"
print(samplestr)
samplestr=re.sub("\\\'" , "\'",samplestr)
print(samplestr)

输出:

q\'q
q\'q

标签: pythonpython-3.xtext-processingre

解决方案


这有点令人困惑,因为您使用的是正则表达式。如果您使用常规replace,您的代码将按原样工作:

samplestr = "q\\\'q"
print(samplestr) # q\'q
samplestr = samplestr.replace("\\\'", "\'") # escape actually unnecessary for single quote
print(samplestr) # q'q

但是,当您使用 时re.sub,第一个参数被视为正则表达式模式,而不是字符串。所以它最终会搜索正则表达式模式 \'的匹配,这只是一个转义的撇号。要在正则表达式中包含文字反斜杠,您需要使用\\.

为了更好的可读性,您应该使用以 .开头的Python 原始字符串r。然后您可以执行以下操作:

samplestr = re.sub(r"\\'", "'", samplestr)
print(samplestr) # q'q

推荐阅读