字符串是Python中最常用的数据类型之一,使用单引号或双引号来创建字符串,使用三引号创建多行字符串。字符串要么使用两个单引号,要么两个双引号,不能一单一双!Python不支持单字符类型,单字符在Python中也是作为一个字符串使用。
字符串是不可变的序列数据类型,不能直接修改字符串本身,和数字类型一样!Python3全面支持Unicode编码,所有的字符串都是Unicode字符串,所以传统Python2存在的编码问题不再困扰我们,可以放心大胆的使用中文。
>>> var1 = 'Hello World!'
>>> var2 = "Jack"
>>> var3 = "" # 空字符串
>>> var4 = "it's apple" # 双引号中可以嵌套单引号
>>> var5 = 'This is "PLANE"!' # 单引号中可以嵌套双引号
>>> var6 = 'what is 'your'name'
SyntaxError: invalid syntax
但是单引号嵌套单引号或者双引号嵌套双引号就会出现歧义。
>>> a = "haha"
>>> b = a
>>> a = "xixi"
>>> a is b
False
>>> a[1] = "z"
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <module>
a[1] = "z"
TypeError: 'str' object does not support item assignment
虽然字符串本身不可变,但可以像列表序列一样,通过方括号加下标的方式,访问或者获取它的子串,当然也包括切片操作。这一切都不会修改字符串本身,当然也符合字符串不可变的原则。
>>> s = "hello world!"
>>> s[4]
'o'
>>> s[2:6]
'llo '
>>> s
'hello world!'
“多行字符串”
前面我们介绍过,在函数和类的紧后面可以用三引号添加doc说明。
在字符串中,可以使用三引号(三单或三双引号都可以)编写跨行字符串,在其中可以包含换行符、制表符以及其他特殊字符。例如:
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
----------------------------------
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')
上面的errHTML是一个封装了HTML代码的字符串,而cursor.execute则执行了一个创建users表的SQL语句。多行字符串本质上和普通字符串没有区别,但是将我们从引号和特殊字符串的泥潭里面解脱出来了,在编写、排版、查看、维护上更人性化。
字符串是Python中和列表、字典同样重要的数据类型,对它的操作特别多,因此内置了很多方法。每当你要处理字符串的时候,不妨来这里查查,或许就有原生的方法,不用你自己去写了。
对字符串的操作方法那么多,是不是需要每个都背下来呢?能背最好,背不了的话至少需要知道下面几个:
* encode() # 编码成bytes类型
* find() # 查找子串
* index() # 获取下标
* replace() # 替换子串
* len(string) # 返回字符串长度,Python内置方法,非字符串方法。
* lower() # 小写字符
* upper() # 大写字符
* split() # 分割字符串
* strip() # 去除两端的指定符号
* startswith() # 字符串是否以xxx开头
* endswith() # 字符串是否以xxx结尾