为了账号安全,请及时绑定邮箱和手机立即绑定

r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串 ,为什么多行字符串前加raw字符串多行字符串中的''和""能显示出来呢?

r'''"To be, or not to be": that is the question.

Whether it's nobler in the mind to suffer.'''


正在回答

5 回答

字符串有两种表示方法,一种是'  '引起来的,另一种是“  ”引起来的,在'  '中不可再出现 ' ;同理,“  ”中也不可再包含 ”,因为程序无法分清你的单引号或者是双引号与后边的哪个单引号或双引号去结合,从而报错。可能没说清楚,见谅 

1 回复 有任何疑惑可以回复我~

但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串(为什么?)

  1.  为什么不能表示多行字符串?

    多行字符串肯定包含  \n  , 但r'...' 里面的字符不需要转义, 就是说 \ 只是普通的斜杠 ,可看下图:

      http://img1.sycdn.imooc.com//572d869b0001b94001350103.jpg

    所以 r'...' 并不能表示出 多行字符串 的效果.

  2. 为什么不能表示包含 ' 和 " 的字符串?

    情况一.  ' 和" 同时存在:

    >>> print r'Python is created by "Guido". Let's start learn Python in imooc!'

          File "<stdin>", line 1

              print r'Python is created by "Guido". Let's start learn Python in imooc!'

                                                                                 ^

    SyntaxError: invalid syntax

    #########  r'...'里面同时出现 ' 和 " 报错, 因为包含 ' 和 " 的会分不清; 


    情况二 . 只有 " 

    >>> print r'python is created by "Guido".'

    python is created by "Guido".

    ######### 输出正常, 原因同 表示具有' 的字符串时用" 引起来;


    情况三 . 只有 '

    >>> print r'Let's start learn Python in imooc!'

          File "<stdin>", line 1

             print r'Let's start learn Python in imooc!'

                              ^

    SyntaxError: invalid syntax

    >>>

    ######### 报错 , 原因 r 的第一个 ' 和 Let' 的 ' 匹配了.

    故.(以上个人理解,欢迎大家讨论~)

8 回复 有任何疑惑可以回复我~
#1

jason890410

情况2中加R和不加R输出一样 那R有什么用
2016-07-21 回复 有任何疑惑可以回复我~
#2

千百度365

不能表示多行另一方面来看是因为要用 r''' '''来表示
2018-07-13 回复 有任何疑惑可以回复我~

print可以打印字符串,加不加r都是字符串(row字符串不是字符串?同样的多行字符串就不是字符串?),所以都是可以打印的。然后至于不能表示包含'和"的字符串貌似说得太过绝对。有这么一个区别,row字符串中的\就是一个反斜线,而一般字符串中反斜线一般和其后的字符构成转义字符。


0 回复 有任何疑惑可以回复我~

其实我试了下,在'''前不加r也能显示"",不知道问什么

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758841    人
  • 解答问题       8657    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串 ,为什么多行字符串前加raw字符串多行字符串中的''和""能显示出来呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信