强制python repr以单引号或者双引号格式返回字符串表达式

背景

假设现在有一个密码: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'\"\\"

 

posted @ 2021-06-04 13:52  bert_qin  阅读(1204)  评论(0编辑  收藏  举报