Python中的字符串
2019-03-23 本文已影响183人
辽A丶孙悟空
一、字符串介绍
- python中字符串的格式
- 如下定义的变量a,存储的是数字类型的值
a = 100
- 如下定义的变量b,存储的是字符串类型的值
b = "hello neuedu.com" #或者 b = 'hello neuedu.com'
- 小总结:
双引号或者单引号中的数据,就是字符串
二、字符串输出
- demo
name = 'neuedu' position = '讲师' address = '辽宁省沈阳市浑南新区东软实训中心A9-416室' print('--------------------------------------------------') print("姓名:%s" % name) print("职位:%s" % position) print("公司地址:%s" % address) print('--------------------------------------------------')
结果:
结果.png
三、字符串输入
- 之前在学习input的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中;
- 注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存
- demo:
userName = input('请输入用户名:') print("用户名为:%s" % userName) password = input('请输入密码:') print("密码为:%s" % password)
结果:(根据输入的不同结果也不同)
结果.png
结果.png
四、下标和切片
- 下标索引
- 所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间
- 生活中的 "下标"
超市储物柜
超市储物柜.png
高铁二等座
高铁二等座.png
高铁一等座
高铁一等座.png
绿皮车
绿皮车.png
- 字符串中"下标"的使用
- 列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。
如果有字符串:name = 'abcdef',在内存中的实际存储如下:
下标.png
- 如果想取出部分字符,那么可以通过下标的方法,(注意python中下标从 0 开始)
name = 'abcdef' print(name[0]) print(name[1]) print(name[2])运行结果:
结果.png
- 切片
- 切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
- 切片的语法:[起始:结束:步长]
注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。
- 我们以字符串为例讲解。
- 如果取出一部分,则可以在中括号[]中,使用:
name = 'abcdef' print(name[0:3]) # 取 下标0~2 的字符运行结果:
结果.png
name = 'abcdef' print(name[0:5]) # 取 下标为0~4 的字符运行结果:
结果.png
name = 'abcdef' print(name[3:5]) # 取 下标为3、4 的字符运行结果:
结果.png
name = 'abcdef' print(name[2:]) # 取 下标为2开始到最后的字符运行结果:
结果.png
name = 'abcdef' print(name[1:-1]) # 取 下标为1开始 到 最后第2个 之间的字符运行结果:
结果.png
name = 'abcdef' print(name[0::2]) # 取 下标为0、2、4的字符运行结果:
结果.png
name = 'abcdef' print(name[1:5:2]) # 取 下标为1、3的字符运行结果:
结果.png
name = 'abcdef' print(name[5:1:2])运行结果:
结果.png
name = 'abcdef' print(name[::-2]) # 取 下标为5、3、1的字符运行结果:
结果.png
name = 'abcdef' print(name[5:1:-2]) # 取 下标为5、3的字符运行结果:
结果.png
- 想一想
(面试题)给定一个字符串aStr, 请反转字符串
五、字符串常见操作
如有字符串mystr = 'hello world neuedu and neusoft',以下是常见的操作
- find
- 检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
mystr.find(str, start=0, end=len(mystr))
mystr = 'hello world neuedu and neusoft' print(mystr.find("neuedu"))运行结果:
结果.png
mystr = 'hello world neuedu and neusoft' print(mystr.find("neuedu",0,10))运行结果:
结果.png
- index
- 跟find()方法一样,只不过如果str不在 mystr中会报一个异常.
mystr.index(str, start=0, end=len(mystr))
mystr = 'hello world neuedu and neusoft' print(mystr.index("neuedu")) print(mystr.index("neuedu",0,10))运行结果:
结果.png
- count
- 返回 str在start和end之间 在 mystr里面出现的次数
mystr.count(str, start=0, end=len(mystr))
mystr = 'hello world neuedu and neusoft' print(mystr.count("neu"))运行结果:
结果.png
- replace
- 把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.
mystr.replace(str1, str2, mystr.count(str1))
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.replace("neu","Neu"))运行结果:
结果.png
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.replace("neu","Neu",1))运行结果:
结果.png
- split
- 以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
mystr.split(str=" ", 2)
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.split(" "))运行结果:
结果.png
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.split(" ",3))运行结果:
结果.png
- capitalize
- 把字符串的第一个字符大写
mystr.capitalize()
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.capitalize())运行结果:
结果.png
- title
- 把字符串的每个单词首字母大写
mystr.title()
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.title())运行结果:
结果.png
- startswith
- 检查字符串是否是以 hello 开头, 是则返回 True,否则返回 False
mystr.startswith(hello)
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.startswith("hello")) print("---------------------------------") print(mystr.startswith("Hello"))运行结果:
结果.png
- endswith
- 检查字符串是否以obj结束,如果是返回True,否则返回 False.
mystr.endswith(obj)
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.endswith("soft")) print("---------------------------------") print(mystr.endswith("Soft"))运行结果:
结果.png
- lower
- 转换 mystr 中所有大写字符为小写
mystr.lower()
mystr = 'HELLO world neuedu AND neusoft' print(mystr) print("---------------------------------") print(mystr.lower())运行结果:
结果.png
- upper
- 转换 mystr 中的小写字母为大写
mystr.upper()
mystr = 'HELLO world neuedu AND neusoft' print(mystr) print("---------------------------------") print(mystr.upper())运行结果:
结果.png
- ljust
- 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
mystr.ljust(width)
mystr = 'neuedu' print(mystr) print("---------------------------------") print(mystr.ljust(10))运行结果:
结果.png
结果1.png
- rjust
- 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
mystr.rjust(width)
mystr = 'neuedu' print(mystr) print("---------------------------------") print(mystr.rjust(10))运行结果:
结果.png
结果1.png
- center
- 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
mystr.center(width)
mystr = 'neuedu' print(mystr) print("---------------------------------") print(mystr.center(30))运行结果:
结果.png
- lstrip
- 删除 mystr 左边的空白字符
mystr.lstrip()
mystr = ' neuedu' print(mystr) print("---------------------------------") print(mystr.lstrip()) mystr = ' neuedu ' print(mystr) print("---------------------------------") print(mystr.lstrip())运行结果:
结果1.png
结果.png
- rstrip
- 删除 mystr 字符串末尾的空白字符
mystr.rstrip()
mystr = 'neuedu ' print(mystr) print("---------------------------------") print(mystr.rstrip()) mystr = ' neuedu ' print(mystr) print("---------------------------------") print(mystr.rstrip())运行结果:
结果.png
结果1.png
- strip
- 删除mystr字符串两端的空白字符
mystr.strip()
mystr = 'neuedu ' print(mystr) print("---------------------------------") print(mystr.strip()) mystr = ' neuedu ' print(mystr) print("---------------------------------") print(mystr.strip())运行结果:
结果.png
结果1.png
- rfind
- 类似于 find()函数,不过是从右边开始查找.
mystr.rfind(str, start=0,end=len(mystr) )
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.rfind("neu"))运行结果:
结果.png
- rindex
- 类似于 index(),不过是从右边开始.
mystr.rindex( str, start=0,end=len(mystr))
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.rindex("neu")) print("---------------------------------") print(mystr.rindex("NEU"))运行结果:
结果.png
- partition
- 把mystr以str分割成三部分,str前,str和str后
mystr.partition(str)
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.partition("and"))运行结果:
结果.png
- rpartition
- 类似于 partition()函数,不过是从右边开始.
mystr.rpartition(str)
mystr = 'hello world neuedu and neusoft' print(mystr) print("---------------------------------") print(mystr.rpartition("and"))运行结果:
结果.png
- splitlines
- 按照行分隔,返回一个包含各行作为元素的列表
mystr.splitlines()
mystr = 'hello\nworld\nneuedu\nand\nneusoft' print(mystr) print("---------------------------------") print(mystr.splitlines())运行结果:
结果.png
- isalpha
- 如果 mystr 所有字符都是字母 则返回 True,否则返回 False
mystr.isalpha()
mystr = 'neuedu' print(mystr) print("---------------------------------") print(mystr.isalpha()) print("*********************************") mystr = 'neuedu.123' print(mystr) print("---------------------------------") print(mystr.isalpha())运行结果:
结果.png
- isdigit
- 如果 mystr 只包含数字则返回 True 否则返回 False.
mystr.isdigit()
mystr = 'neuedu' print(mystr) print("---------------------------------") print(mystr.isdigit()) print("*********************************") mystr = 'neuedu.123' print(mystr) print("---------------------------------") print(mystr.isdigit()) print("*********************************") mystr = '123' print(mystr) print("---------------------------------") print(mystr.isdigit())运行结果:
结果.png
- isalnum
- 如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False
mystr.isalnum()
mystr = 'neuedu' print(mystr) print("---------------------------------") print(mystr.isalnum()) print("*********************************") mystr = '123' print(mystr) print("---------------------------------") print(mystr.isalnum()) print("*********************************") mystr = 'neuedu123' print(mystr) print("---------------------------------") print(mystr.isalnum()) print("*********************************") mystr = 'neuedu 123' print(mystr) print("---------------------------------") print(mystr.isalnum())运行结果:
结果.png
- isspace
- 如果 mystr 中只包含空格,则返回 True,否则返回 False.
mystr.isspace()
mystr = 'neuedu123' print(mystr) print("---------------------------------") print(mystr.isspace()) print("*********************************") mystr = '' print(mystr) print("---------------------------------") print(mystr.isspace()) print("*********************************") mystr = ' ' print(mystr) print("---------------------------------") print(mystr.isspace()) print("*********************************") mystr = 'neuedu 123' print(mystr) print("---------------------------------") print(mystr.isspace())运行结果:
结果.png
- join
- mystr 中每个元素后面插入str,构造出一个新的字符串
mystr.join(str)
mystr = 'neuedu' print(mystr) str="_" print(str.join(mystr)) print("--------------------------") mystr = 'neuedu' print(mystr) str=" " print(str.join(mystr)) print("--------------------------") mystr = 'neuedu' print(mystr) str="*" print(str.join(mystr)) print("--------------------------")运行结果:
结果.png
- 想一想
- (面试题)给定一个字符串aStr,返回使用空格或者'\t'分割后的倒数第二个子串
结果.png
结果.png
结果.png
超市储物柜.png
高铁二等座.png
高铁一等座.png
绿皮车.png
下标.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果1.png
结果.png
结果1.png
结果.png
结果1.png
结果.png
结果.png
结果1.png
结果.png
结果1.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png
结果.png