背景
假设现在有一个密码:12345678‘ “ \
现在需要将这个密码作为一个参数传给一个可执行程序a.exe
a.exe ”密码“ 或者a.exe '密码'
这个时候就需要对’或者”,\进行转义。
某些语言只支持双引号字符串,例如C。
repr方法
python repr函数可以解决这个问题。
但是repr方法有如下特点:
1.如果字符串中有单引号且无双引号,则返回的字符串表达式为双引号格式;
2.其余情况全都返回单引号格式。
强制python repr以单引号或者双引号格式返回字符串表达式
下述两个方法可以达成这个功能。
#! /usr/bin/python3 def reprs(s): return "'" + repr('"' + s)[2:] def reprd(s): return '"' + reprs(s)[1:-1].replace('"', '\\"').replace('\\\'', '\'') + '"' info = "12345678'\"\\" print(repr("12345678'\\")) print(repr(info)) print(reprs(info)) print(reprd(info))
运行结果如下:
"12345678'\\"
'12345678\'"\\'
'12345678\'"\\'
"12345678'\"\\"