我有一个JSON文件,其中存储了一个映射,其中包含正则表达式,如下所示:
"F(\\d)": "field-\\\\1",
"FLR[ ]*(\\w)": "floor-\\\\1",
为了符合标准I对反斜杠进行转义,实际regexp应该包含\d
、\w
和\\1
一旦我用JSON.load()读取了这个JSON,我仍然需要对生成的字典进行后期处理,以获得正确的regexp。我需要用\
替换\\
。最好的办法是什么
到目前为止,我尝试了re.sub()
和str.replace()
,但在这两种情况下,都不清楚如何在substation中表示一个反斜杠
例如,我不明白为什么下面不产生一个反斜杠:
In [76]: "\\\\d".replace("\\\\", "\\")
Out[76]: '\\d'
它确实会产生一个反斜杠-显示时会转义该反斜杠。这样做的目的是,没有非转义方式显示的字符仍然可以清晰地打印出来——否则,您将不知道反斜杠是否要转义后面的字符
这可以通过检查单个字符来证明:
在python中执行regex的一个技巧是:使用原始字符串。如果将
r
放在字符串文字的第一个引号之前,反斜杠将不会转义任何内容(结束引号除外)r"\n"
是一个包含两个字符的字符串,一个\
和一个n
,相当于"\\n"
。在处理regex和其他需要发送转义序列的东西时,它们非常有用。另见:What exactly do “u” and “r” string flags do in Python, and what are raw string literals?相关问题 更多 >
编程相关推荐