Python 3连接复杂字符串时打印非预期的转义字符

时间:2018-03-29 08:01:04

标签: string bash python-3.x escaping os.system

我发送复杂的命令,消息,以及os.system的原因。在使用引号发送URL时遇到了障碍,代替了也使用了撇号的命令结构。我尝试过格式化,原始,unicode,concat,写出来,转义,在某些字符串上使用引号或撇号,无论我做什么,python都会在我的新字符串中添加魔术“\”转义字符串,在使用bash命令时语法错误。

string vars

com1 = 'command -X ARG '
url1 = '"https://big-long.webaddress.com/folder/151515-15151-515151blah?token=ABC123"'
com2 = " -H \"DATA-TYPE:app/data\" --flag '{\"Stuff\":\""
message = 'This is a test message'
com3 = "\"}'"

EX1

newstr = com1 + url1 + com2 + message + com3

打印:

'command -X ARG“https://big-long.webaddress.com/folder/151515-15151-515151blah?token=ABC123”-H“DATA-TYPE:app / data”--flag \'{“Stuff”:“这是测试消息”} \''

评论

变量com2和com3由于某种原因逃避了撇号,但实际上写了“\”字符。

EX2

我实际上可以连接两个很好的字符串,完成后,打印出魔术“\”转义字符。

v1 = "'Stuff'"
v2 = '"Stuff"'

v1+v2

打印:'\'Stuff \'“Stuff”'

即使在v1中转义'也会产生相同的结果。

问题

打印魔术转义字符究竟发生了什么,我需要做些什么来正确混合和混合引号和撇号?我需要向系统发送命令,并找到关于魔法\的文档,这导致我无处可去。提前谢谢。

的其他

我将字符串发送到os.system(),因为它实际上是在linux bash中运行的curl脚本。

"command -X ARG %s -H \"DATA-TYPE:app/data\" --flag '{\"Stuff\":\"%s\"}'" % (url1,message)

还会在撇号上发送其他\字符......

0 个答案:

没有答案