首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加反斜杠而不进行转义

问添加反斜杠而不进行转义
EN

Stack Overflow用户
提问于 2010-02-02 03:38:10
回答 6查看 131.7K关注 0票数 37

我需要转义字符串中的& (与号)字符。问题是每当我使用string = string.replace ('&', '\&')时,结果都是'\\&'。添加了一个额外的反斜杠来转义原始的反斜杠。如何删除这个多余的反斜杠?

EN

回答 6

Stack Overflow用户

发布于 2010-02-02 03:41:53

仅显示结果'\\&' -实际上,字符串为\&

代码语言:javascript
复制
>>> str = '&'
>>> new_str = str.replace('&', '\&')
>>> new_str
'\\&'
>>> print new_str
\&

在shell中尝试它。

票数 65
EN

Stack Overflow用户

发布于 2010-02-02 03:41:34

实际上并没有添加额外的反斜杠;它只是由repr()函数添加的,以指示它是文字反斜杠。当需要打印表达式的结果时,Python解释器使用repr()函数(在对象上调用__repr__() ):

代码语言:javascript
复制
>>> '\\'
'\\'
>>> print '\\'
\
>>> print '\\'.__repr__()
'\\'
票数 28
EN

Stack Overflow用户

发布于 2010-02-02 04:37:02

Python以一种特殊的方式处理文字字符串中的\。

这是因为您可以键入'\n'表示换行符,或者键入'\t'表示表示制表符

由于'\&'对Python没有任何特殊意义,因此Python词法分析器不会导致错误,而是隐式地为您添加额外的\。

实际上,使用\\&或r'\&'比使用'\&'更好

这里的r表示原始字符串,这意味着\不会被特殊处理,除非它正好在字符串开头的引号字符之前。

在交互式控制台中,Python使用repr来显示结果,这就是为什么您会看到两个'\‘。如果你使用print或者使用len(string),你会发现它实际上只有2个字符

一些例子

代码语言:javascript
复制
>>> 'Here\'s a backslash: \\'
"Here's a backslash: \\"
>>> print 'Here\'s a backslash: \\'
Here's a backslash: \
>>> 'Here\'s a backslash: \\. Here\'s a double quote: ".'
'Here\'s a backslash: \\. Here\'s a double quote: ".'
>>> print 'Here\'s a backslash: \\. Here\'s a double quote: ".'
Here's a backslash: \. Here's a double quote ".

要澄清彼得在评论中提出的观点,请参阅this link

与标准C不同,所有无法识别的转义序列在字符串中都保持不变,即在字符串中保留反斜杠。(此行为在调试时很有用:如果键入错误的转义序列,则更容易将结果输出识别为已损坏。)还需要注意的是,上表中标记为“(仅限Unicode)”的转义序列属于无法识别的非Unicode字符串文字的转义类型。

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

https://stackoverflow.com/questions/2179493

复制
相关文章

相似问题

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