python字符串中的单双引号及转义解释

转自http://blog.csdn.net/zyz511919766/article/details/22668077

python中字符串可以(且仅可以)使用成对的单引号、双引号、三个双引号(文档字符串)包围:
'this is a book'
 "this is a book"
"""this is a book"""

可在单引号包围的字符串中包含双引号,三引号等,但不能包含单引号自身(需转义)
'this is a" book'
'this is a"" book'
'this is a""" book'
'this is a\' book'
也可多单引号中的双引号转义,但通常没什么必要和意义
'this is a\" book'

同理,双引号中可包含单引号,但不能包含双引号以及由双引号构成的三引号
"this is a' book"
"this is a\" book"
也可对双引号中的单引号进行转义,但同样,这通常没有必要也没有意义
"this is a\' book"

现在还有一个问题,如果我想在单引号包围的字符串中显示“\'”呢,答案是分别对“\”和“'”进行转义,也即要想在字符串中显示“\”这个特殊字符,需对特殊字符本身进行转义,其他特殊字符类似。
>>> s='this is a\' book'
>>> print s
this is a' book

>>> s='this is a\\\' book'
>>> print s
this is a\' book

要显示多少次“\”就要对“\”进行多少次转义:
>>> s='this is a\\\\\' book'
>>> print s
this is a\\' book


同样,想在双引号包围的字符串中显示“\"”也要分别对“\”和“"”进行转义。
>>> s="this is a\\\" book"
>>> print s
this is a\" book

说到这里,有必要谈一谈字符串中“\'”和“\"”的替换问题,也即字符串本身是包含这样的子串的,比如:
>>> s='this is a\\\' book'
>>> s
"this is a\\' book"
>>> print s
this is a\' book


这里的字符串中包含“\'”这样一个子串,现在想把这个子串替换为“@@@”
>>> s=s.replace('\\\'','@@@')
>>> s
'this is a@@@ book'
>>> print s
this is a@@@ book
也即在书写将被替换的子串时,也需对特殊的字符进行转义,s=s.replace('\\\'','@@@')中经转义后,最终的字符串中将被替换掉的子串为“\'”.

双引号中含有特殊字符的子串的替换遵循同样的原理。

另外需要注意的是,想要知道字符串最终的样子则应当使用print函数将其打印出来,以免混淆。
>>> s='this is a\\\' book'
>>> s
"this is a\\' book"
>>> print s
this is a\' book





  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果要在 Java 使用正则表达式匹配包含引号的字符串,并将匹配结果保存到字符串,需要注意以下两个问题: 1. 在正则表达式使用引号需要进行转义,否则会被当做字符串的起始或结束符号,导致编译错误。 2. 在 Java 使用字符串表示正则表达式时,同样需要对引号进行转义,否则字符串编译也会出现错误。 下面是一个示例代码,演示了如何对包含引号的字符串进行正则表达式匹配,并将匹配结果存储到字符串: ```java String str = "This is a 'quoted' string containing \"double\" and 'single' quotes"; String regex = "['\"](.*?)['\"]"; // 匹配引号或双引号括起来的部分 Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); while (matcher.find()) { String match = matcher.group(1); // 获取匹配的部分(不包含引号) match = match.replaceAll("\"", "\\\\\""); // 对双引号进行转义 match = match.replaceAll("'", "\\\\'"); // 对引号进行转义 System.out.println(match); // 输出:double, single } ``` 在上述代码,首先定义了一个包含引号的字符串 `str`,然后定义了一个正则表达式 `regex`,用于匹配字符串引号或双引号括起来的部分。接着使用 `Pattern` 类的 `compile` 方法将正则表达式编译成模式对象,再使用 `Matcher` 类的 `matcher` 方法将模式对象应用到字符串上,得到匹配器对象 `matcher`。然后使用 `while` 循环遍历匹配结果,对每个匹配的部分进行双引号引号的转义,并输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值