Python 字符串

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 的简写

示例:保留小数位与%进度

1 >>> print("%.2f" % 1)  # 保留两位小数
2 1.00
3 >>> print("{:.1f}".format(1.16321))  # 保留一位小数
4 1.2
5 >>> print("%d%%" % 1)  # 带上百分号
6 1%

 

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个子字符串。
  • splitlines():mystr.splitlines([int]) 以换行符为分隔符来切片mystr并返回列表,若传入非0参数则表示元素带上换行符。
  • capitalize():mystr.capitalize() 把mystr的首个字符变成大写。
  • title():把字符串的每个单词首字母变成大写。
  • istitle():mystr.istitle() 检测字符串mystr中所有的单词首字母是否为大写字母,其他为小写字母,若是则返回True;否则返回False。
  • startswith():mystr.startswith(str) 检查mystr是否以str开头,若是则返回True,反之返回False。
  • endswith():mystr.endswith(str) 检查mystr是否以str结尾,若是则返回True,反之返回False。
  • lower():mystr.lower() 将mystr中所有大写字母变成小写。
  • upper():mystr.upper() 将mystr中所有小写字母变成大写。
  • islower():mystr.islower() 如果mystr中所有的字母都是小写,若是则返回True;否则返回False。
  • isupper():mystr.isupper() 如果mystr中所有的字母都是大写,若是则返回True;否则返回False。
  • swapcase():mystr.swapcase() 将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(),只不过是从右边开始。
  • 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():mystr.join(seq) 在序列seq(字符串、列表、元组、字典、集合、字典)的每个元素之间插入str,返回一个新的字符串。
  • maketrans():str.maketrans(str1, str2) 将str1和str2的字符一一对应,返回字典。
  • translate():mystr.translate(dict) 配合传入str.maketrans()返回的字典参数,根据字典的键值对映射规则将mystr中的字符进行一一替换。

 示例:

  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 >>> "中文".isalpha()
 78 True
 79 >>> "123".isdigit()
 80 True
 81 >>> "a1b2".isalnum()
 82 True
 83 >>> "   ".isspace()
 84 True
 85 
 86 >>> ".".join(mystr)  # 处理对象可为字符串、列表、元组
 87 'm.y. .n.a.m.e. .i.s. .x.i.a.o.m.i.n.g....'
 88 >>> li = ["my", "name", "is"]
 89 >>> "_".join(li)  
 90 'my_name_is'
 91 
 92 >>> "aB".swapcase()
 93 'Ab'
 94 
 95 >>> "1\r\n2\n3".splitlines()
 96 ['1', '2', '3']
 97 >>> "1\n2\n3\n".splitlines()
 98 ['1', '2', '3']
 99 >>> "1\n2\n3\n".splitlines(1)  # 若传入非0参数:表示保留\n
100 ['1\n', '2\n', '3\n']
101 
102 # 1对应a,2对应b,3对应c
103 >>> map = str.maketrans('123', 'abc')  # {49: 97, 50: 98, 51: 99}
104 >>> s = '54321123789'
105 >>> s.translate(map)
106 '54cbaabc789'

 

posted @ 2020-02-15 16:28  Juno3550  阅读(178)  评论(0编辑  收藏  举报