1. 输出:格式化
2. 输入:input()
3. 索引和切片
4. 字符串常见操作
1. 输出:格式化
什么是字符串?
双引号或者单引号中的数据,就是字符串。
格式化方式一:format()
>>> print("我叫{},今年{}岁".format("xiaoming", 10)) # 自动排序 我叫xiaoming,今年10岁 >>> print("我叫{0},今年{1}岁,大家直接叫我{0}".format("xiaoming", 10)) # 手动排序 我叫xiaoming,今年10岁,大家直接叫我xiaoming
格式化方式二:格式符号(%)
1 >>> age = 10 2 >>> print("我今年%d岁" % age) 3 我今年10岁 4 >>> name = "xiaoming" 5 >>> print("我叫%s,今年%d岁" % (name, age)) 6 我叫xiaoming,今年10岁
常用格式符号:
格式符号 | 转换 |
---|---|
%s | 通过 str() 字符串转换来格式化 |
%d | 有符号十进制整数 |
%f | 浮点实数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 索引符号(小写'e') |
%E | 索引符号(大写“E”) |
%g | %f 和 %e 的简写 |
%G | %f 和 %E 的简写 |
2. 输入:input()
input() 函数能够完成从键盘获取数据,并保存到一个变量中,其获取的数据均为字符串类型。
input() 传参接受表达式,并把表达式的结果作为输出提示语。
- Python3:input()
- Python2:raw_input()
1 >>> a = input() 2 123 3 >>> a 4 123 5 >>> type(a) 6 <type 'str'> 7 8 >>> a = input() 9 "abc" 10 >>> a 11 'abc' 12 >>> type(a) 13 <type 'str'> 14 15 >>> input(1+1) 16 2 # 输出的提示语 17 '' # 未获取到键盘数据 18 >>> input("a"+"b") 19 ab 20 '' 21 >>> value=100 22 >>> input(value) 23 100 24 ''
3. 索引和切片
3.1 索引
所谓索引(下标),就是编号,通过编号能够找到相应的存储空间。
列表、元组支持索引操作,而字符串实际上就是字符的数组,所以也支持索引操作。
如果有字符串 name = 'abcdef'
,在内存中的实际存储如下:
如果想取出部分字符,可以使用索引的方法(Python的索引从0开始)。
示例:
1 >>> a = "abcde" 2 >>> a[0] 3 'a' 4 >>> a[1] 5 'b' 6 >>> a[2] 7 'c'
3.2 切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
切片的操作语法:[起始位: 结束位: 步长]
- 其选取的区间为左闭右开型,即从“起始”位开始,到“结束”位的前一位结束(即不包括结束位本身)。
- 步长:每间隔多少位字符来取数,为正数时表示从左到右的顺序取数;步长为负数时表示从右到左的逆序取数。
示例:
>>> name = "abcdef" >>> name[0:2] # 取下标 0~2 的字符 'ab' >>> name[:3] # 取下标 0~3 的字符 'abc' >>> name[2:] # 取下标 2 之后的所有字符 'cdef' >>> name[1:-1] # 取下标 1~倒数第二位 的字符 'bcde' >>> name[3:1] # 当结束位大于起始位时 '' >>> name[3:1:-1] # 当结束位大于起始位时,使用负数步长 'dc' >>> name[::2] # 从左到右每隔两位取数 'ace' >>> name[::-2] # 从右到左每隔两位取数 'fdb' >>> name[::-1] # 反转字符串 'fedcba'
4. 字符串常见操作
注意,由于字符串是不可变类型,以下函数的操作均会返回一个新的字符串对象,而不会改变原变量引用的值。
-
find():mystr.find(str, start, end) 检查str在索引(start和end)之间是否包含在mystr中,如果是,则返回str开始的索引;若不包含则返回 -1。
-
rfind():类似于find(),只不过是从右边开始查找。
-
index():跟find()用法一样,只不过若不包含,则返回异常。
-
rindex():类似于index(),只不过是从右边开始查找。
-
count():mystr.count(str, start, end) 返回str在索引(start和end)之间在mystr中出现的次数。
-
replace():
mystr.replace(str1, str2, count) 将mystr中的str1替换成str2 ,若count指定,则替换不超过count次。
-
split():mystr.split(str=" ", maxsplit) 以str为分隔符来切片mystr,如果maxsplit指定,则仅分隔maxsplit个子字符串。
-
capitalize():mystr.capitalize() 把mystr的首个字符变成大写。
-
title():把字符串的每个单词首字母变成大写。
-
startswith():mystr.startswith(str) 检查mystr是否以str开头,若是则返回True,反之返回False。
-
endswith():mystr.endswith(str) 检查mystr是否以str结尾,若是则返回True,反之返回False。
-
lower():mystr.lower() 将mystr中所有大写字母变成小写。
-
upper():mystr.upper() 将mystr中所有小写字母变成大写。
-
ljust():mystr.ljust(width) 返回一个(原字符串左对齐,并使用空格填充至长度为width的)新字符串。
-
rjust():mystr.rjust(width) 返回一个(原字符串右对齐,并使用空格填充至长度为width的)新字符串。
-
center():mystr.center(width) 返回一个(原字符串居中,并使用空格填充至长度为width的)新字符串。
-
lstrip():mystr.lstrip() 删除mystr左边的空白字符。
-
rstrip():mystr.rstrip() 删除mystr右边的空白字符。
-
strip():mystr.strip() 删除mystr左右两边的空白字符。
-
partition():mystr.partition(str) 把mystr以str分割为三个部分(str前、str、str后)作为元素来返回一个元组。
-
rpartition():类似于partition(),只不过是从右边开始。
-
splitlines():mystr.splitlines() 按照行进行分割,每行作为一个元素来返回一个列表。
-
isalpha():mystr.isalpha() 如果mystr所有字符都是字母,则返回True,反之返回False。
-
isdigit():mystr.digit() 如果mystr所有字符都是数字,则返回True,反之返回False。
-
isalnum():mystr.isalnum() 如果mystr所有字符都是字母或数字,则返回True,反之返回False。
-
isspace():mystr.isspace() 如果mystr只包含空格,则返回True,反之返回False。
-
join():str.join(mystr) 在mystr的每个字符后面插入str,返回一个新的字符串。
示例:
1 >>> mystr = "my name is xiaoming.." 2 >>> mystr.find("name") 3 3 4 >>> mystr.find("name", 10, -1) 5 -1 6 >>> 7 >>> mystr.index("name") 8 3 9 >>> mystr.index("an") 10 Traceback (most recent call last): 11 File "<stdin>", line 1, in <module> 12 ValueError: substring not found 13 14 >>> mystr.rfind(" ") 15 10 16 >>> mystr.rindex(" ") 17 10 18 19 >>> mystr.count("i") 20 3 21 >>> mystr.count("i", 10, -1) 22 2 23 24 >>> mystr.replace(" ", "_", 1) 25 'my_name is xiaoming..' 26 >>> mystr.replace("_", " ") 27 'my name is xiaoming..' 28 29 >>> mystr.split(" ") 30 ['my', 'name', 'is', 'xiaoming..'] 31 >>> mystr 32 'my name is xiaoming..' 33 >>> mystr.split(" ", 2) 34 ['my', 'name', 'is xiaoming..'] 35 36 >>> mystr.capitalize() 37 'My name is xiaoming..' 38 >>> mystr.title() 39 'My Name Is Xiaoming..' 40 41 >>> mystr.replace(" ", "_") 42 'my_name_is_xiaoming..' 43 44 >>> mystr.startswith("my") 45 True 46 >>> mystr.endswith("..") 47 True 48 49 >>> mystr.upper() 50 'MY NAME IS XIAOMING..' 51 >>> mystr.upper().lower() 52 'my name is xiaoming..' 53 54 >>> mystr.ljust(30) 55 'my name is xiaoming.. ' 56 >>> mystr.rjust(30) 57 ' my name is xiaoming..' 58 >>> mystr.center(30) 59 ' my name is xiaoming.. ' 60 61 >>> mystr.ljust(30).rstrip() 62 'my name is xiaoming..' 63 >>> mystr.rjust(30).lstrip() 64 'my name is xiaoming..' 65 >>> mystr.center(30).strip() 66 'my name is xiaoming..' 67 68 >>> mystr.rpartition("i") 69 ('my name is xiaom', 'i', 'ng..') 70 >>> mystr.partition("i") 71 ('my name ', 'i', 's xiaoming..') 72 >>> "my\nname\nis".splitlines() 73 ['my', 'name', 'is'] 74 75 >>> "abc".isalpha() 76 True 77 >>> "123".isdigit() 78 True 79 >>> "a1b2".isalnum() 80 True 81 >>> " ".isspace() 82 True 83 84 >>> ".".join(mystr) # 处理对象可为字符串、列表、元组 85 'm.y. .n.a.m.e. .i.s. .x.i.a.o.m.i.n.g....' 86 >>> li = ["my", "name", "is"] 87 >>> "_".join(li) 88 'my_name_is'