【发布时间】:2024-01-15 01:14:01
【问题描述】:
有时当我从文件或用户获取输入时,我会得到一个包含转义序列的字符串。我想处理转义序列in the same way that Python processes escape sequences in string literals。
例如,假设myString 定义为:
>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs
我想要一个执行此操作的函数(我称之为process):
>>> print(process(myString))
spam
eggs
重要的是,该函数可以处理 Python 中的所有转义序列(在上面链接的表格中列出)。
Python 有这样的功能吗?
【问题讨论】:
-
hmmm,您希望如何处理包含
'spam'+"eggs"+'''some'''+"""more"""的字符串? -
@Nas Banov 这是一个很好的测试。该字符串不包含转义序列,因此处理后应该完全相同。
myString = "'spam'+\"eggs\"+'''some'''+\"\"\"more\"\"\"",print(bytes(myString, "utf-8").decode("unicode_escape"))似乎有效。 -
这个问题的大多数答案都有严重的问题。在不破坏 unicode 的情况下,似乎没有标准的方法来尊重 Python 中的转义序列。 @rspeer 发布的答案是我为 Grako 采用的答案,因为它迄今为止处理了所有已知案例。
-
我不同意阿帕拉拉;使用 unicode_escape (在正确的 latin1 编码的输入上)是完全可靠的,正如 Hack5 在他对 user19087 答案的评论中链接到的问题所示,是 python 开发人员推荐的方法。
-
这能回答你的问题吗? How to un-escape a backslash-escaped string?