python中斜杠加引号什么意思_如何在Python中转义反斜杠和单引号或双引号?

本文探讨了Python中从文件读取字符串时的转义问题,以及如何正确处理字符串中的反斜杠和特殊字符。解释了原始字符串(r'')在处理正则表达式时的作用,并给出了使用`replace`和`re.sub`进行字符串替换的示例。强调了在使用正则表达式时理解转义机制的重要性。
摘要由CSDN通过智能技术生成

你是怎么做到的

如果你的“长字符串”是从文件中读取的(正如你在评论中提到的),那么你的问题是误导性的。因为你显然不完全理解逃逸的工作原理,所以你写下的问题可能与你真正的问题不同。

如果这些是文件的内容(如图所示为51个字节+可能是一个或两个行尾字符):some 'long' string \' and \" some 'escaped' strings

这就是python中的样子:>>> s1 = open('data.txt', 'r').read().strip()

>>> s1

'some \'long\' string \\\' and \\" some \'escaped\' strings'

>>> print s1

some 'long' string \' and \" some 'escaped' strings

你在问题中所写的将会产生:>>> s2 = '''some 'long' string \' and \" some 'escaped' strings'''

>>> s2

'some \'long\' string \' and " some \'escaped\' strings'

>>> print s2

some 'long' string ' and " some 'escaped' strings

>>> len(s)

49

你看到区别了吗?

s2中没有反斜杠,因为当您使用它们在Python中写下字符串时,它们有特殊的含义。当你从文件中读到它们时,它们没有特别的意义。

如果你想写下一个后面有反斜杠的字符串,你必须保护你输入的反斜杠。你必须避免Python认为它有特殊的意义。你可以用反斜杠来逃避它。

一种方法是使用反斜杠,但通常使用原始字符串更容易、更不容易混淆:>>> s3 = r'''some 'long' string \' and \" some 'escaped' strings'''

'some \'long\' string \\\' and \\" some \'escaped\' strings'

>>> print s3

some 'long' string \' and \" some 'escaped' strings

>>> s1 == s3

True

你是什么意思

上面的话只是想告诉你你的问题很混乱。

实际的答案有点难——当你使用正则表达式时,反斜杠又有了一层特殊的含义。如果要通过字符串转义和通过正则表达式转义安全地获得反斜杠,则必须相应地写下多个反斜杠。

此外,将单引号(')放入单引号原始字符串(r'')的规则也有点棘手,因此我将使用带有三个单引号(r'''''')的原始字符串。>>> print re.sub(r'''\\['"]''', 'thevalue', s1)

some 'long' string thevalue and thevalue some 'escaped' strings

这两个反斜杠在字符串转义过程中保留两个反斜杠,然后通过正则表达式转义仅成为一个没有特殊含义的反斜杠。总的来说,regex说:

“匹配一个反斜杠,后跟单引号或双引号。”

应该怎么做

现在,对于pièce de résistance来说:前面的例子很好地证明了jwz的含义。如果您忘记了regex(并了解原始字符串),解决方案将变得更加明显:>>> print s1.replace(r'\"', 'thevalue').replace(r"\'", 'thevalue')

some 'long' string thevalue and thevalue some 'escaped' strings

1有些人遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值