1、字符串(String)
字符串是日常开发中用的最广泛的数据类型了,可以是用「单引号」或「双引号」进行创建。字符串是由多个字符拼接成的序列,一般用于表示文本。如果想让字符串包含换行缩进等格式时可以使用「三引号」(''')来修饰,一般打印段落文字时用得较多。另外字符串是「不可变数据」,定义以后就不能修改元素了,比如str_1 = "abc",如果调用str_1[0] = 'd',这样是会报错的,只能 通过
+, *, 分片等方式
进行「拼接」,间接得到相同的字符串内容,不过已经不是原先的字符串了,变量指向新的字符串,而旧的字符串对象最后会被Python的回收机制回收掉。
① 字符串的基本操作
代码示例如下:
# 1.字符串创建 str_1 = "Hello Python!" str_2 = str(123) # 2.分片相关操作(和前面4.4.4列表操作一致) print("str_1[3] = %s" % str_1[3]) print("str_1[2:] = %s" % str_1[2:]) print("str_1[2:5] = %s" % str_1[2:5]) print("str_1[2:10:2] = %s" % str_1[2:10:2]) print("str_1[0:8] + str_1[8:] = %s" % (str_1[0:8] + str_1[8:])) print("str_1[6:] * 3 = %s" % (str_1[6:] * 3)) print("str_2的数据类型:%s" % type(str_2))
运行结果如下:
str_1[3] = l str_1[2:] = llo Python! str_1[2:5] = llo str_1[2:10:2] = loPt str_1[0:8] + str_1[8:] = Hello Python! str_1[6:] * 3 = Python!Python!Python! str_2的数据类型:<class 'str'>
② 转义字符
python用反斜杠(\)
转义字符,所有转义字符如下表所示:
转义字符 | 作用 | 转义字符 | 作用 |
行尾的\ |
续行符 | \000 |
空 |
\ |
反斜杠 | \n |
换行 |
\' |
单引号 | \v |
纵向制表符 |
\a |
响铃 | \t |
横向制表符 |
\b |
退格 | \r |
回车 |
\e |
转义 | \f |
换页 |
\o |
八进制数代表字符 | \x |
十六进制数代表字符 |
③ 字符串操作的相关函数
Python字符串操作相关的函数有很多,不建议死记,用到的时候查表即可,相关的操作函数
如下表所示:
函数名 | 作用 |
capitalize() | 把字符串的第一个字符改为大写 |
casefold() | 把整个字符串的所有字符改为小写 |
center(width) | 将字符串居中,并使用空格填充至长度width的新字符串 |
count(sub[,start[,end]]) | 返同sub在字符申里边出现的次数,start和end参数表示范围,可选 |
encode(encoding= 'utf-8 ',errors='strict') | 以encoding指定的编码格式对字符串进行编码 |
endswith(sub[,start[,end]]) | 检查字符串是否以sub 子字符串结束,如果是返回True,否则返回False。start和end参数表示范围,可选 |
expandtabs([tabsize= 8]) | 把字符串中的tab符号(\t)转换为空格,如不指定参数,默认的空格数是tabsize=8 |
find(sub[,start[,end]]) | 检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1,start和end参数表示范围,可选 |
index(sub[,start[,end]]) | 跟find方法一样,不过如果sub不在string中会产生一个异常 |
isalnum() | 如果字符串中至少有一个字符,并且所有字符都是字母或数字则返回True,否则返回False |
isalpha() | 如果字符串至少有一个字符串,并且所有字符都是字母则返回True,否则返回False |
isdecimal() | 如果字符串只包含十进制数字则返回True,否则返回False |
isdigit() | 如果字符串只包含数字则返回True,否则返回False |
islower() | 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回False |
isnumeric() | 如果字符串中只包含数字字符,则返回True,否则返回False |
isspace() | 如果字符串中只包含空格,则返回True,否则返回False |
istitle() | 如果字符串是标题化(所有单词大写开头,其余小写),则返回True,否则返回False |
isupper() | 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回False |
join(sub) | 以字符串作为分隔符,插入到sub中所有的字符之间,使用+去拼接大量字符串的时候是很低效率的, 因为加号拼接会引起内存赋值一级垃圾回收操作,此时用join来拼接效率会高一些,比如: ''.join(['Hello','Python']) |
ljust(width) | 返回一个左对齐的字符串,并使用空格填充至长度为width的新字符串 |
lower() | 转换字符串所有大写字符为小写 |
lstrip() | 去除字符串左边的所有空格 |
partition(sub) | 找到子字符串sub,把字符串分割成3元组(前,pre,后)如果字符串中不包含则返回('原字符串','','') |
replace(old, new[,count]) | 把字符串中的old子字符串替换成new,如果count指定,则替换次数不超过count次 |
rfind(sub[,start[,end]]) | 和find()方法类似,不过是从右开始查找 |
rindex(sub[,start[,end]]) | 和index()方法类似,不过是从右开始查找 |
rjust(width) | 返回一个右对齐的字符串,并使用空格填充至长度为width的新字符串 |
rpartition(sub) | 类似于partition(),不过是从右边开始查找 |
rstrip() | 删除字符串末尾的空格 |
split(sep=None,maxsplit=-1) | 不带参数默认是以空格为分隔符切片字符串,如果maxspli参数t右设置,则仅分隔maxsplit个子字符串, 返回切片后的子字符串拼接的列表 |
splitlines([keepends]) | 按照'\n'分隔,返回一个包含各行作为元素的列表,如果keepends参数指定,则返回前keepends行 |
startswith(prefix[,start[,end]]) | 检查字符串是否以prefix开头,是则返回True,否则返回False。start和end参数可以指定范围检查,可选 |
strip([chars]) | 删除字符串前边和后边所有的空格,chars参数可定制删除的字符串,可选 |
swapcase() | 反转字符串中的大小写 |
title() | 返回标题化(所有的单词都是以大写开始,其余字母小写)的字符串 |
translate(table) | 按照table的规则(可由str.maketrans('a','b')定制)转换字符串中的字符 |
upper() | 转换字符串中所有的小写字符为大写 |
zfill(width) | 返回长度为width的字符串,原字符串右对齐,前边用0填充 |
④ 字符串格式化
其实就是format函数的使用而已,使用代码示例如下:
# 位置参数 str1 = "{0}生{1},{2}{3}!".format("人", "苦短", "我用", "Python") print(str1) # 关键字参数 str1 = "{a}生{c},{b}{d}!".format(a="人", c="苦短", b="我用", d="Python") print(str1) # 位置参数可以与关键字参数一起使用,不过位置参数需要在关键字参数前,否则会报错! # 另外还有个叫替换域的东西,冒号代表格式化符号开始,比如下面的例子: str1 = "{0}:{1:.4}".format("圆周率", 3.1415926) print(str1)
运行结果如下:
人生苦短,我用Python! 人生苦短,我用Python! 圆周率:3.142
⑤ 字符串前加'r','u'的意义
在字符串前加上「r或者R」,代表后面的字符串是「原始字符串」,即直接按照字面意思使用,没有转义字符和不能打印的字符。比如print(r'Python\n'),输出的结果会是:Python\n。而在字符串前加上小写的「u」,代表后面的字符串「以Unicode格式进行编码」,一般用在中文字符串前,避免出现中文乱码问题。