python - Python re.sub():仅尝试替换转义字符
问题描述
在 Python 3.x 中,我需要用一些自定义模式替换某些文本中的转义双引号,保留未转义的双引号。所以我把简单的代码写成:
text = 'These are "quotes", and these are \"escaped quotes\"'
print(re.sub(r'\"', '~', text))
并期望看到:
These are "quotes", and these are ~escaped quotes~
但不是上面,我得到:
These are ~quotes~, and these are ~escaped quotes~
那么,仅替换转义引号的正确模式是什么?
此问题的背景是尝试读取其中包含 Javascript 函数的“无效”JSON 文件,按原样放置换行符,但使用转义引号。如果有更简单的方法可以用键值中的换行符解析 JSON,我很感激这方面的提示。
解决方案
首先,您需要使用原始字符串来分配text
,以便反斜杠将按字面意思保留(或者您可以转义反斜杠)。
text = r'These are "quotes", and these are \"escaped quotes\"'
其次,您需要转义正则表达式中的反斜杠,以便正则表达式引擎按字面意思处理它。
print(re.sub(r'\\"', '~', text))
推荐阅读
- php - 找不到类“Automattic\WooCommerce\Client”
- javascript - 如何区分物理键盘输入和触摸屏输入(Electron js)
- python - 如何通过python for循环创建100个数据框名称
- windows - Qt QProcess 无法在可在 cmd 提示符下运行的命令上启动
- c++ - 来自空括号的不明确复制分配的编译器差异
- python - 根据熊猫中不同长度的字符串结尾创建新列
- android - 应用 Android 与 google photo-google drive 关联
- git - 如何使用 Git 客户端和 git 服务器配置无密码身份验证?
- opencv - OCR 风玫瑰中的书面角度
- html - 输入类型范围限制为仅抓取句柄