我需要转换包含单引号、双引号和换行符的字符串,以便在系统调用中使用。考虑以下输入字符串:
"""one'two\nthree"four"""
应将其转换为以下输出字符串:
"$'one\'two\nthree\"four'"
以便它可以作为git
提交命令中的消息参数提交:
git commit --message=$'one\'two\nthree\"four'
带有前导$
和周围单引号'
的奇数语法是bash手册页中关于引用(搜索引用)一节中描述的bash构造。我尝试了许多python函数,包括str.replace
、re.sub
、json.dumps
、repr
和str.encode('unicode-escape')
。但没有一个能产生所需的转变。在这种情况下,python似乎太高级了,不利于自身。我们将非常感激地收到关于如何进行的建议。你知道吗
系统调用本身将使用如下代码进行(为了清楚起见,省略try
块):
import subprocess
call = ["git", "commit", "--message", "'one\'two\nthree\"four'"]
cpi = subprocess.run(call)
我也可以使用一些描述的git库,但是我还没有为此做功课。你知道吗
注意:上述call
列表中最后一项中不必要的$
字符已被删除。你知道吗
您想要的命令目前是错误的,它不是有效的Python字符串,因为缺少右
"
,它应该是:这很容易通过一个简单的
.format
调用来构造:相关问题 更多 >
编程相关推荐