首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解释这种对特殊字符进行转义的奇怪行为?

如何解释这种对特殊字符进行转义的奇怪行为?
EN

Stack Overflow用户
提问于 2012-06-27 02:11:39
回答 3查看 102关注 0票数 0

为了好玩,我写了这个简单的函数来反转Python中的字符串:

代码语言:javascript
复制
def reverseString(s):
    ret = ""
    for c in s:
        ret = c + ret
    return ret

现在,如果我传入以下两个字符串,我会得到有趣的结果。

代码语言:javascript
复制
print reverseString("Pla\net")
print reverseString("Plan\et")

此命令的输出为

代码语言:javascript
复制
te
alP
te\nalP

我的问题是:为什么特殊字符\n在传递到函数中时会被转换为新行,而当函数通过反向n\解析它时却不会?另外,如何停止函数解析\n而返回n\

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-27 02:18:44

您应该看一下各个字符序列,看看会发生什么:

代码语言:javascript
复制
>>> list("Pla\net")
['P', 'l', 'a', '\n', 'e', 't']
>>> list("Plan\et")
['P', 'l', 'a', 'n', '\\', 'e', 't']

如您所见,\n是单个字符,而\e是两个字符,因为它不是有效的转义序列。

要防止这种情况发生,请转义反斜杠本身,或使用原始字符串:

代码语言:javascript
复制
>>> list("Pla\\net")
['P', 'l', 'a', '\\', 'n', 'e', 't']
>>> list(r"Pla\net")
['P', 'l', 'a', '\\', 'n', 'e', 't']
票数 4
EN

Stack Overflow用户

发布于 2012-06-27 02:15:14

原因是'\n‘是字符串中的单个字符。我猜\e不是一个有效的转义,所以它被视为两个字符。

在原始字符串中查找您想要的内容,或者在您实际需要文字'\‘的地方使用'\’

票数 2
EN

Stack Overflow用户

发布于 2012-06-27 02:15:29

翻译是python语法的一个函数,所以它只在python解析python本身的输入时发生(即,当python解析代码时)。在其他时间不会发生这种情况。

在您的程序中,有一个字符串和一个字符串,前者在构造为对象时包含由'\n'表示的单个字符,后者在构造时包含子字符串'\e'。在颠倒它们之后,python不会重新解析它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11213442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档