python数据类型(字符串String1)
字符串String
字符串可以理解为一段普通的文本内容,在Python里,使用引号来表示一个字符串。比如表示姓名、家庭地址等。
一、字符串表示方法
a="I'm Tom" #一对双引号 b='Tom said:"I am Tom"' #一对单引号 c='Tom said:"I\'m Tom"' #转义字符 d='''Tom said:"I'm Tom"''' #三个单引号 e="""Tom said:"I'm Tom"""" #三个双引号
说明:
- 双引号或者单引号中的数据,就是字符串
- 如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符
- 使用三个单引号、双引号定义的字符串可以包裹任意文本
二、转义字符
转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分,使用 \ 来表示一个转义字符。常见的转义字符以及它所代表的含义如下表:
转义字符
|
含 义
|
\r
|
将当前位置移到本行开头
|
\n
|
将当前位置移到下一行开头
|
\t
|
用来表示一个制表符
|
\\
|
代表一个反斜线字符 \
|
\'
|
用来表示一个单引号
|
\"
|
用来表示一个双引号
|
在字符串的前面添加r,在Python里面表示原生字符串。r是raw的意思,原始的,不转义。
三、字符串的索引和切片
1、索引
字符串是字符的有序集合,可以通过其位置来获得具体的元素。在python中,字符串中的字符是通过索引来提取的,索引从0开始。索引可以取负值,表示从末尾提取,最后一个为-1,倒数第二个为-2,即程序认为可以从结束处反向计数。
如果要取出字符串中的某一个字符,可以用括号‘[ ]’加索引方式:
#正向取
data = 'Hello world'[1] print(data) # 'e'
#反向取
data1 = 'Hello world'[-4] print(data1) # 'o'
2、切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
切片的语法:[起始:结束:步长]
注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。
m=[abcdefghijklmnopqrstuvwxyz] print(m[2:9]) #'cdefghi'
print(m[2:]) #'cdefghijklmnopqrstuvwxyz' print(m[:9]) #'abcdefghi'
print(m[3:15:2]) #'dfhjln' print(m[3,15:0]) #步长不能为0 print(m[3:15:-1]) #没有数据 print(m[15:3:-1]) #ponmlkjihgfe
print(m[::]) #从头到尾复制 print(m[::-1]) #zyx...cba
#start和end为负表示从右向左数 print(m[-9:-5]) #rstu
四、字符串常见的操作
字符串常见操作包括:
- 获取长度:len
- 查找内容:find,index,rfind,rindex
- 判断:startswith,endswith,isalpha,isdigit,isalnum,isspace
- 计算出现次数:count
- 替换内容:replace
- 切割字符串:split,rsplit,splitlines,partition,rpartition
- 修改大小写:capitalize,title,upper,lower
- 表格处理:ljust,rjust,center,lstrip,rstrip,strip
- 字符串拼接:join
注意:在Python中,字符串是不可变的!所有的字符串相关方法,都不会改变原有的字符串,都是返回一个结果,在这个新的返回值里,保留了执行后的结果!
len
len函数可以获取字符串的长度。
s = 'Hello world!' print(len(s)) # 12
查找
查找相关的方法,使用方式大致相同,但是略有区别。
1. find
查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回-1。
语法格式:
S.find(sub[, start[, end]]) -> int
示例:
mystr = 'Hello world!' print(mystr.find('llo')) # 2 print(mystr.find('llow')) # -1 print(mystr.find('o', 6)) # 7 print(mystr.find('ol', 1, -1)) # -1
2. rfind
类似于 find()函数,不过是从右边开始查找。
mystr = 'Hello world!' print(mystr.rfind('o')) # 7
3.index
跟find()方法一样,只不过,find方法未找到时,返回-1,而index未找到时,会报一个异常。
语法格式:
S.index(sub[, start[, end]]) -> int
示例:
mystr = 'Hello world!' print(mystr.index('ll')) # 2 print(mystr.index('lol')) # ValueError: substring not found
4.rindex
类似于 index(),不过是从右边开始。
判断
python提供了非常丰富的方法,可以用来对一个字符串进行判断。
1. startswith
判断字符串是否以指定内容开始。 语法格式:
S.startswith(prefix[, start[, end]]) -> bool
示例:
mystr = 'Hello world!' print(mystr.startswith('He')) # True print(mystr.startswith('he')) # False
2. endwith
判断字符串是否以指定内容结束。 语法同startwith。
3. isalpha
判断字符串是否是纯字母。
mystr = 'Hello' print(mystr.isalpha()) # True # 字符串含空格 mystr1 = 'Hello world!' print(mystr1.isalpha()) # False
4. isdigit/isdecimal/isnumeric
判断一个字符串是否是数字,但使用方法各有不同,请看示例:
v1='123' print(v1.isdigit()) #True print(v1.isdecimal()) #True print(v1.isnumeric()) #True v2='123壹' print(v2.isdigit()) #False print(v2.isdecimal()) #False print(v2.isnumeric()) #True v3='123①' print(v3.isdigit()) #True print(v3.isdecimal()) #False print(v3.isnumeric()) #True
判断一个字符串是不是阿拉伯数字最严谨的是用isdecimal()方法。
5. isalnum
判断是否由数字和字母组成。只要出现了非数字和字母,就返回False。
mystr = 'abcd' print(mystr.isalnum()) # True mystr = '1234' print(mystr.isalnum()) # True mystr = 'abcd1234' print(mystr.isalnum()) # True mystr = 'abcd1234_' print(mystr.isalnum()) # False
6. isspace
如果 mystr 中只包含空格,则返回 True,否则返回 False。
mystr = '' print(mystr.isspace()) # False mystr是一个空字符串 mystr = ' ' print(mystr.isspace()) # True 只有空格 mystr = ' d' print(mystr.isspace()) # False 除了空格外还有其他内容
count
返回 str在start和end之间 在 mystr里面出现的次数。
语法格式:
S.count(sub[, start[, end]]) -> int
示例:
mystr = 'Hello world!' print(mystr.count('l')) # 3
替换
替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
mystr = 'Hello world!' newstr = mystr.replace('r', 'R') # 原字符串没变化 print(mystr) # Hello world! print(newstr) # Hello woRld! newstr1 = mystr.replace('l', 'L', 2) print(newstr1) # HeLLo world!
内容分隔
内容分隔主要涉及到split,splitlines,partition和rpartition四个方法。
1.split
以指定字符串为分隔符切片,如果 maxsplit有指定值,则仅分隔 maxsplit+1 个子字符串。返回的结果是一个列表。
mystr = 'Hello world!' print(mystr.split()) # ['Hello', 'world!'] print(mystr.split('l')) # ['He', '', 'o wor', 'd!'] 两个l连一起,分割成一个空字符串 print(mystr.split('l', 2)) # ['He', '', 'o world!']
2.rsplit
用法和split基本一致,只不过是从右往左分隔。
mystr = 'Hello world!' print(mystr.rsplit('l', 1)) # ['Hello wor', 'd!'] #splitlines()按照行分隔,返回一个包含各行作为元素的列表。 mystr1='Hello \nworld' print(mystr1.splitlines()) # ['Hello ', 'world']
3.partition
把mystr以str分割成三部分,str前,str和str后,三部分组成一个元组。
mystr = 'Hello world!' print(mystr.partition('l')) # ('He', 'l', 'lo world!') 从左第一个l分割
4.rpartition
类似于 partition()函数,不过是从右边开始。
mystr = 'Hello world!' print(mystr.rpartition('l')) # ('Hello wor', 'l', 'd!') 从右第一个l分割
修改大小写
修改大小写的功能只对英文有效,主要包括,首字母大写capitalize,每个单词的首字母大写title,全小写lower,全大写upper。
1.capitalize
第一个单词的首字母大写。
mystr = 'hello world!' print(mystr.capitalize()) # Hello world!
2.title
每个单词的首字母大写。
mystr = 'hello world!' print(mystr.title()) # Hello World!
3.lower
所有都变成小写。
mystr = 'heLLo woRld!' print(mystr.lower()) # hello world!
4.upper
所有都变成大写。
mystr = 'heLLo woRld!' print(mystr.upper()) # HELLO WORLD!
空格处理
Python为我们提供了各种操作字符串里表格的方法。
1. ljust
返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)。
mystr = 'heLLo' print(mystr.ljust(10)) #heLLo 右边补5个空格
2. rjust
返回指定长度的字符串,并在左侧使用空白字符补全(右对齐)。
mystr = 'heLLo' print(mystr.rjust(10)) # heLLo左边补5个空格
3. center
返回指定长度的字符串,并在两端使用空白字符补全(居中对齐)
mystr = 'heLLo' print(mystr.center(10)) # heLLo 两端加空格,内容居中
4. lstrip
删除 mystr 左边的空白字符。
mystr = ' he llo ' print(str.lstrip()) #he llo 只去掉了左边的空格,中间和右边的空格被保留
5. rstrip
删除 mystr 右边的空白字符。
mystr = ' he llo ' print(str.rstrip()) # he llo右边的空格被删除
6. strip
删除两断的空白字符。
str = ' he llo ' print(str.strip()) #he llo
字符串拼接
把参数进行遍历,取出参数里的每一项,然后再在后面加上mystr。
语法格式:
S.join(iterable)
示例:
cha = '_' print(cha.join('hello')) # 字符串的连接 # h_e_l_l_o print(cha.join(['I', 'like', 'China'])) # 列表的连接 # I_like_China print(cha.join(('hello', 'world'))) # 元祖的连接 # hello_world