文章目录
- 2.3字符串、列表、元祖、字典
- 2.3.1字符串
- 2.3.1.1字符串介绍
- 2.3.1.1.1python中字符串的格式:
- 2.3.1.1.2字符串在内存中的存储方式
- 2.3.1.2字符串的输入输出
- 2.3.1.2.1字符串输出
- 2.3.1.2.2字符串输入
- 2.3.1.2.3组字符串的方式
- 2.3.1.3下标和切片
- 2.3.1.3.1下标索引
- 2.3.1.3.2切片
- 2.3.1.4字符串常见操作
- 2.3.1.4.1find
- 2.3.1.4.2rfind
- 2.3.1.4.3index
- 2.3.1.4.4rindex
- 2.3.1.4.5count
- 2.3.1.4.6replace
- 2.3.1.4.7split
- 2.3.1.4.8capitalize
- 2.3.1.4.9title
- 2.3.1.4.10startswith
- 2.3.1.4.11endswith
- 2.3.1.4.12lower
- 2.3.1.4.13upper
- 2.3.1.4.14ljust
- 2.3.1.4.15rjust
- 2.3.1.4.16center
- 2.3.1.4.17lstrip
- 2.3.1.4.18rstrip
- 2.3.1.4.19strip
- 2.3.1.4.20partition
- 2.3.1.4.21rpartition
- 2.3.1.4.22splitlines
- 2.3.1.4.23isalpha
- 2.3.1.4.24isdigit
- 2.3.1.4.25isalnum
- 2.3.1.4.26isspace
- 2.3.1.4.27join
2.3字符串、列表、元祖、字典
2.3.1字符串
2.3.1.1字符串介绍
2.3.1.1.1python中字符串的格式:
如下定义的变量a,存储的是数字类型的值
a = 100
如下定义的变量b,存储的是字符串类型的值
b = “hello itcast.cn”
或者
b = ‘hello itcast.cn’
小总结:
双引号或者单引号中的数据,就是字符串
2.3.1.1.2字符串在内存中的存储方式
在python中,字符串以字符形式存在内存中,一个字符占1个字节。字符串“100”在内存中占3个字节和一个”\0”共四个字节(其中“\0是底层c语句的知识”)。数字在内存中占1个字节(1个字节可以存储0-255的任意一个数值)。
2.3.1.2字符串的输入输出
2.3.1.2.1字符串输出
name = 'xiaoming'
position = '讲师'
address = '北京市昌平区建材城西路金燕龙办公楼1层'
print('--------------------------------------------------')
print("姓名:%s"%name)
print("职位:%s"%position)
print("公司地址:%s"%address)
print('--------------------------------------------------')
结果:
--------------------------------------------------
姓名: xiaoming
职位: 讲师
公司地址: 北京市昌平区建材城西路金燕龙办公楼1层
--------------------------------------------------
2.3.1.2.2字符串输入
注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存
userName = input('请输入用户名:')
print("用户名为:%s"%userName)
password = input('请输入密码:')
print("密码为:%s"%password)
结果:(根据输入的不同结果也不同)
请输入用户名:dongGe
用户名为: dongGe
请输入密码:haohaoxuexitiantianxiangshang
密码为: haohaoxuexitiantianxiangshang
2.3.1.2.3组字符串的方式
“+”直接拼接
给字符串格式化
# Author:csz
a='lao'
b='wang'
c=a+b
print(c) #字符串拼接
A=100
B=200
C=A+B
print(C) #数值相加
conlecttionStr1="======"+a+b+"======"
print(conlecttionStr1) #字符串拼接1
conlecttionStr2="======%s======"%(a+b)
print(conlecttionStr1) #字符串拼接2
结果:
laowang
300
======laowang======
======laowang======
2.3.1.3下标和切片
2.3.1.3.1下标索引
所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间
字符串中"下标"的使用:
列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。
如果有字符串:name = ‘abcdef’,在内存中的实际存储如下:
如果想取出部分字符,那么可以通过下标的方法,(注意python中下标从 0 开始)
# Author:csz
name = 'abcdef'
print(name[0])
print(name[1])
print(name[2])
运行结果:
a
b
c
2.3.1.3.2切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
切片的语法:[起始:结束:步长]
注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。
如果取出一部分,则可以在中括号[]中。
name = 'abcdef'
print(name[3:5]) # 取下标为3、4 的字符
print(name[2:]) # 取下标为2到最后一个的字符
print(name[1:-1]) #取 标为1开始 到 最后第2个之间的字符
print(name[-1]) #取最后第一个字符
print(name[1:5:2]) #第一个为起始位置,第二个为终止点,第三个参数为步长
结果:
de
cdef
bcde
f
bd
demo:给定一个字符串aStr, 请反转字符串
方式一:
name = 'abcdef'
i = len(name)-1
while i>0:
ch1 = str(name[i])
print("%s\t"%ch1,end="")
i-=1
结果:
f e d c b
方式二:
name = 'abcdef'
print(name[-1:0:-1])
print(name[-1::-1])
print(name[::-1])
print(name[-1:-3:-1])
结果:
fedcb
fedcba
fedcba
fe
2.3.1.4字符串常见操作
如有字符串mystr = ‘hello world itcast and itcastcpp’,以下是常见的操作
根据一下操作,可以查处字符串的方法
2.3.1.4.1find
检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
mystr.find(str, start=0, end=len(mystr))
2.3.1.4.2rfind
类似于 find()函数,不过是从右边开始查找.
mystr.rfind(str, start=0,end=len(mystr) )
2.3.1.4.3index
跟find()方法一样,只不过如果str不在 mystr中会报一个异常.
mystr.index(str, start=0, end=len(mystr))
2.3.1.4.4rindex
类似于 index(),不过是从右边开始.
mystr.rindex( str, start=0,end=len(mystr))
2.3.1.4.5count
返回 str在start和end之间 在 mystr里面出现的次数
mystr.count(str, start=0, end=len(mystr))
2.3.1.4.6replace
把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.
mystr.replace(str1, str2, mystr.count(str1))
数字、字符串、元组为不可变类型,替换后不会改变原字符串的值,只会重新生成一个变量的值。
2.3.1.4.7split
以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
mystr.split(str=" ", 2)
2.3.1.4.8capitalize
把字符串的第一个字符大写
mystr.capitalize()
2.3.1.4.9title
把字符串的每个单词首字母大写
2.3.1.4.10startswith
检查字符串是否是以 obj 开头, 是则返回 True,否则返回 False
mystr.startswith(obj)
2.3.1.4.11endswith
检查字符串是否以obj结束,如果是返回True,否则返回 False.
mystr.endswith(obj)
2.3.1.4.12lower
转换 mystr 中所有大写字符为小写
mystr.lower()
2.3.1.4.13upper
转换 mystr 中的小写字母为大写
mystr.upper()
2.3.1.4.14ljust
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
mystr.ljust(width)
2.3.1.4.15rjust
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
mystr.rjust(width)
2.3.1.4.16center
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
mystr.center(width)
2.3.1.4.17lstrip
删除 mystr 左边的空白字符
mystr.lstrip()
2.3.1.4.18rstrip
删除 mystr 字符串末尾的空白字符
mystr.rstrip()
2.3.1.4.19strip
删除mystr字符串两端的空白字符
2.3.1.4.20partition
把mystr以str分割成三部分,str前,str和str后
mystr.partition(str)
2.3.1.4.21rpartition
类似于 partition()函数,不过是从右边开始.
mystr.rpartition(str)
2.3.1.4.22splitlines
按照行分隔,返回一个包含各行作为元素的列表
mystr.splitlines()
2.3.1.4.23isalpha
如果 mystr 所有字符都是字母 则返回 True,否则返回 False
mystr.isalpha()
2.3.1.4.24isdigit
如果 mystr 只包含数字则返回 True 否则返回 False.
mystr.isdigit()
2.3.1.4.25isalnum
如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False
mystr.isalnum()
2.3.1.4.26isspace
如果 mystr 中只包含空格,则返回 True,否则返回 False.
mystr.isspace()
2.3.1.4.27join
mystr 中每个字符后面插入str,构造出一个新的字符串
mystr.join(str)
面试题:(面试题)给定一个字符串aStr,返回使用空格或者’\t’分割后的倒数第二个子串