在Python中创建单一转义的单引号和双引号,在换行符也存在的情况下

2024-03-28 17:57:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要转换包含单引号、双引号和换行符的字符串,以便在系统调用中使用。考虑以下输入字符串:

"""one'two\nthree"four"""

应将其转换为以下输出字符串:

"$'one\'two\nthree\"four'"

以便它可以作为git提交命令中的消息参数提交:

git commit --message=$'one\'two\nthree\"four'

带有前导$和周围单引号'的奇数语法是bash手册页中关于引用(搜索引用)一节中描述的bash构造。我尝试了许多python函数,包括str.replacere.subjson.dumpsreprstr.encode('unicode-escape')。但没有一个能产生所需的转变。在这种情况下,python似乎太高级了,不利于自身。我们将非常感激地收到关于如何进行的建议。你知道吗

系统调用本身将使用如下代码进行(为了清楚起见,省略try块):

import subprocess
call = ["git", "commit", "--message", "'one\'two\nthree\"four'"]
cpi = subprocess.run(call)

我也可以使用一些描述的git库,但是我还没有为此做功课。你知道吗

注意:上述call列表中最后一项中不必要的$字符已被删除。你知道吗


Tags: 字符串gitbashmessage系统callonecommit
1条回答
网友
1楼 · 发布于 2024-03-28 17:57:11

您想要的命令目前是错误的,它不是有效的Python字符串,因为缺少右",它应该是:

"$'one\'two\nthree\"four'"

这很容易通过一个简单的.format调用来构造:

>>> "$'{}'".format("""one'two\nthree"four""") == "$'one\'two\nthree\"four'"
True

相关问题 更多 >