python - 创建单独转义的单引号和双引号,其中也存在换行符/python

标签 python string bash python-3.x

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

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

这应该转换为以下输出字符串:

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

这样它就可以在 git 提交命令中作为消息参数提交:

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

带有前导 $ 和周围单引号 ' 的奇怪语法是 bash 结构,在 bash 联机帮助页的引用部分(搜索 QUOTING)中有所描述。我尝试了很多 python 函数,包括 str.replacere.subjson.dumpsreprstr.encode('unicode-escape')。但没有一个产生所需的转变。看来,在这种情况下,python 太高级了。我们将非常感谢收到关于如何进行的建议。

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

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

我可能还会使用一些描述的 git 库,但我还没有为此做功课。

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

最佳答案

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

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

这很容易通过简单的 .format 调用构建:

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

关于python - 创建单独转义的单引号和双引号,其中也存在换行符/python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41537271/

相关文章:

linux - 试图将特定文件复制到特定文件夹,但有一个问题

bash - 如果文件末尾没有换行符,如何使用 `while read` (Bash) 读取文件的最后一行?

java - 公共(public)方法中的 indexOf() java 无法编译

python - 在特定扩展名的文件中搜索字符串后提取文件夹名称

python - 将 JSON 数组解析为类实例对象?

python - Altair 中的条形图 : ValueError: Faceted charts cannot be layered

javascript - 将字符串数组中字符串的每个首字母大写

android - 使用 TravisCI 将 APK 上传到 Github

python - 如何管理两个线程,pynput 鼠标监听器和 while 循环?

python - 如何在 python 中的某个时间后退出递归 DFS 算法?