1.字符串
1.1 单引号字符串和转义引号
1.1.1引号字符串
字符串就是值,就像数字一样:
当python打印出字符串时,是用单引号括起来的,但在程序中用的是双引号。单引号和双引号事实上没有区别
上面两个图用的分别用的是双引号和单引号,打印出来的结果是一样的。但是在某些情况下,单双引号会派上用场
在上面的代码中,第一段字符串包含了单引号(或者称为撇号,根据上下文,应该叫撇号),这时候就不能用单引号将整个字符串括起来。
如果这么做,解释器就会报错。注:撇号在英文中表示所有格
这里字符串为'Let',Python并不知道如何处理后面的s(也就是这行剩下的内容)
在第二个字符串中,句子里包含双引号。所以需要单引号把字符串括起来。
1.1.2 转义引号
使用反斜线(\)对字符串中的引号进行转义,如上图
1.2 拼接字符串
上图中是用一个接着一个的方式写了两个字符串,python会自动拼接他们,即将它们合为一个字符串。这种机制用的比较少,有时却非常有用。
拼接字符串用的比较多的方法是直接用加号+,如下图
1.3 字符串表示,str和repr
值被转化为字符串的两种机制。可以使用两个函数来使用这两种机制:一种是通过str函数,它会把值转换为合理形式的字符串,以便用户可以理
解;另一种是通过repr函数,它会创建一个字符串,以合法的python表达式的形式来表示值。如下面的例子
repr(x)也可以写作`x`实现(注意,`是反引号,不是单引号)。如果打印一个包含数字的句子,那么反引号就很有用了。比如
str、repr和反引号是将python值转化为字符串的三种方法。函数str让字符串更容易阅读、而repr(和反引号)则把结果字符串
转化为合法的python表达式。
1.4 input和raw_input的比较
上图看起来是一个完全合法的程序。但是运行该程序
问题在于input会假设用户输入的是合法的python表达式(或多或少有些与repr函数相反的意思)如果以字符串作为输入的名字,
程序运行是没有问题的:
要求用户带着引号输入名字有点过分,因此,需要使用raw_input函数,它会把所有的输入当作原始数据(raw data),然后将其放入
字符串中:
除非对input有特别的需要,否则应该尽可能使用raw_input函数。
1.5 长字符串、原始字符串和Unicode
1.5.1 长字符串
如果需要写一个非常非常长的字符串,他需要跨多行,那么,可以使用三个引号代替普通引号
还可以用三个双引号,如"""Like This"""。注:在用这种不同的引用方式,可以在字符串之中同时使用单引号和双引号,而不需要使用反斜线进行
转义。
普通字符串也可以跨行,如果一行中最后一个字符是反斜线,那么,换行符本身就“转义”了,也就是被忽略了
同样也试用于表达式和语句
1.5.2原始字符串
原始字符串以r开头。可以在原始字符串中放入任何字符。像平常一样对引号进行转义,最后的输出的字符包含了转义所用的反斜线:
不能在原始字符串结尾输入反斜线,换句话说就是原始字符串最后一个字符不能是反斜线,除非对反斜线进行转义(转义的反斜线也会成为字符串的一部分)
如果希望原始字符串以一个反斜线作为结尾,该如何处理
本质上就是把反斜线单独作为一个字符串来处理。上图中就是最简单的作法。
注意,可以在原始字符串中同时使用单双引号,甚至三引号字符串也可以。
1.5.3Unicode字符串
python中的普通字符串在内部是以8位的ASCII码形成存储的,而Unicode字符串则存储为16位Unicode字符,这样就能够表示更多的字符集了,
包括世界上大多数语言的特殊字符。
可以看到,Unicode字符串使用U前缀,就像原始字符串使用r一样。在python3中,所有字符串都是Unicode字符串。