字面量解释:
字符串字面量(stringliteral)是指双引号引住的一系列字符,双引号中可以没有字符,可以只有一个字符,也可以有很多个字符。
python re.sub 中解释, 原始字符串和 字符串字面量的关系:
链接:https://docs.python.org/3/library/re.html
Regular expressions use the backslash character ('\'
) to indicate special forms or to allow special characters to be used without invoking their special meaning. This collides with Python’s usage of the same character for the same purpose in string literals; for example, to match a literal backslash, one might have to write '\\\\'
as the pattern string, because the regular expression must be \\
, and each backslash must be expressed as \\
inside a regular Python string literal.
匹配\ --->正则表达式为\\ ---->python字符串字面量为\\\\
each backslash must be expressed as \\
inside a regular Python string literal.
译:在python字符串字面量每一个斜杠必须用\\(两个斜杠)表示
python 的原始字符串 格式 r"字符串"
The solution is to use Python’s raw string notation for regular expression patterns; backslashes are not handled in any special way in a string literal prefixed with 'r'
. So r"\n"
is a two-character string containing '\'
and 'n'
, while "\n"
is a one-character string containing a newline. Usually patterns will be expressed in Python code using this raw string notation.
例子:
import re
ss="""\\"""
print(ss) # 输出 \
s = "\\。。\\"
print(s) # 输出 \。。\
s = re.sub(r"\\",r"\\]]]",s)
print(s) # \]]]。。\]]]
print(r"\n") # \n
print(r"\\") # \\
print(r"\\]]]")# \\]]]
sql转义替换
desc = "\\\'\"\nb\t a\nb"
print(desc)
desc=desc.replace("\\",r"\\")
desc =desc.replace(r"'",r"\'")
desc = desc.replace("\"",r"\"")
desc = desc.replace("\n",r"\n")
desc = desc.replace("\t",r"\t")
desc = desc.replace("\r\n",r"\n")
print(desc)