04. 字符串

1. 输出:格式化

2. 输入:input()

3. 索引和切片

3.1 索引

3.2 切片

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'

猜你喜欢

转载自www.cnblogs.com/juno3550/p/12310182.html