Python 引用 Python 中的字符串,并带有适当的转义

Python-quote a string in Python with proper escapes

提问人:evansrhonda 提问时间:9/12/2022 更新时间:9/12/2022 访问量:24

问:

我想取一个字符串,并返回此字符串的 Python 样式的带引号表示。我怎样才能正确地做到这一点,即。尊重 Python 语法?

我想要的一些例子:

  • cat -> "cat"
  • "dog" -> '"dog"'
  • 'elephant' -> "'elephant'"
  • "what's up" -> '"what\'s up "'
  • '''"""seriously dude?"""''' -> '\'\'\'"""seriously dude?"""\'\'\'

请注意,引号被正确转义,这比简单地按照一些类似问题中的建议进行操作要复杂得多。f'"{s}"'

我知道在 Python 中可以有多种方法来表示同一个字符串(、、、、......我没有偏好使用哪一个,只要结果在 Python 中解析为有效的字符串文字即可。"cat"'cat'"""cat""""c"'a'"t"

对于上下文:我的 Python 程序生成 Python 代码。用户输入的一部分是一些原始字符串,必须在输出中将其转换为带引号的 Python 文本。

python-3.x 字符串 转义 引号

评论


答:

0赞 evansrhonda 9/12/2022 #1

我找不到特定于 Python 的方法来执行此操作,但巧合的是 JSON 具有类似的字符串文字语法:

def quote_string(s: str) -> str:
    # JSON string literals are a subset of Python (?)
    return json.dumps(s)
  • 我不确定这是否总是正确的 - 我认为一些转义序列可能在 Python 中有效,而在 JSON 中无效,反之亦然
  • JSON 没有很多引号风格,因此它无法有效地利用一些优化,例如'no "big" deal'"no \"big\" deal"

可能还有比这更好的方法,但我想不出一个。