字符串
什么是字符串?
字符串是python中最常用的数据类型,我们可以使用引号""来创建字符串,事实上,再python中加了引导的字符都被认为是字符串!
#有四种赋值方式:
name="Changsha"#双引号
age="3000"#只要加双引号就是字符串
age_1=4000#不加,整型
msg=""" I love me """#三双引号
msg_1='''I LOVE YOU TOO'''#三单引号
hometown='Cahngsha'#单引号
print(type(name),type(age),type(age_1),type(msg),type(msg_1),type(hometown))
#结果:<class 'str'> <class 'str'> <class 'int'> <class 'str'> <class 'str'> <class 'str'>
多引号有什么作用呢?作用就是多行字符串必须用多引导。
msg="
轻轻的我走了,
正如我轻轻的来;
我轻轻的招手,
作别西天的云彩。
"
print(msg)
字符串运算及操作
数字可以进行加减乘除运算,字符串呢?只能进行“相加”和“乘除”运算。
(1)拼接(+)
a="Hello"
b="Python"
print(a+b)
#结果:'HelloPython'
注意,字符串的拼接只能是双方都是字符串,不能跟数字或其他类型拼接。
#错误形式:
age=5000
name="ws"
print(age+name)
#Traceback (most recent call last):
#TypeError: unsupported operand type(s) for +: 'int' and 'str'
(2)重复(*)
a="hello"
print(a*5)
#结果:hellohellohellohellohello
(3)字符串索引([]以及切片([::]))
#注意事项:空格也算一个字符
#元素查找:从左往右数从0开始 或者 从右往左数从-1开始
#########0123456789012345678901234567
a="life is short, I use python"
print(len(a))
#索引
print(a[0])
#查找多个元素
print(a[0:4])
#查找间隔元素
print(a[5:13:2])
#从负数开始取值
print(a[::-1])
#切片
print(a[:13])#从索引值为0开始到第十二个元素
print(a[15:])#从索引值15开始到最后的元素
print(dir())#查找当前所有的变量名
#结果:27
#结果:l
#结果:life
#结果:i hr
#结果:nohtyp esu I ,trohs si efil
#结果:life is short
#结果:I use python
(4)大小写的转换
-
str.lower():转小写
-
str.upper():转大写
-
str.swapcase():大小写对换
-
str.capitalize():字符串首为大写,其余小写
-
str.title():以分割符法为标记,首字母大写,其余为小写
例子:
a="life is short, I use python"
#将所有大写字符转换为小写字符
print(a.lower())
#结果:life is short, i use python
#将所有小写字符转换为大写字符
print(a.upper())
#结果:LIFE IS SHORT, I USE PYTHON
#将所有小写字符变成大写,将大写字符变成小写
print(a.swapcase())
#结果:LIFE IS SHORT, i USE PYTHON
#将字符串的第一个字符大写
print(a.capitalize())
#结果:Life is short, i use python
#返回标题化的字符串
print(a.title())
#结果:Life Is Short, I Use Python
应用:
#不区分大小写
input_str="AbcA"
aa=input("请输入")
if aa.lower()==input_str.lower():#都改为小写做为比较
print("输入正确")
else:
print("输入错误")
(5)字符串格式输出对齐
-
str.center()
-
str.ljust()
-
str.rjust()
-
str.zfill()
例子:
a="Life is short,I use python"
print(a.center(35,'*'))#返回一个元字符居中,并使用空格填充长度 width的新字符
#结果:*****Life is short,I use python****
print(a.ljust(35,'*'))#返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
#结果:Life is short,I use python*********
print(a.rjust(35,'*'))#返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
#结果:*********Life is short,I use python
print(a.zfill(35))#返回长度为width 的字符串,原字符串 string 右对齐,前面填充0,只有一个参数
#结果:000000000Life is short,I use python
(6)#删除指定字符串
- str.lstrip()
- str.rstrip()
- str.strip()
a="*****Life is short,I use python****"
print(a.lstrip("*"))
#结果:'Life is short,I use python****'
print(a.rstrip("*"))
#结果:'*****Life is short,I use python'
print(a.strip("*"))
#结果:'Life is short,I use python'
(7)计数
=COUNTIF(B2:B31,">=30")/COUNT(B2:B31)
例子:
a="Life is short,I use python"
print(a.count('i'))# 返回str 在 string 里面出现的次数
#结果:2
print(a.count('i',4,8))# 在索引值为[4,8) 的范围内 str 出现的次数
#结果:1
(8)字符串搜索定位与替换
- str.find
a="life is short, I use python"
print(a.find('e'))#查找元素并返回第一次出现的元素的索引值
#结果:3
print(a.find('e',18,24))#查找元素在指定索引范围内的索引
#结果:19
print(a.find('w'))#找不到值返回-1
#结果:-1
- str.index
- 和find()方法一样,只不过如果str不在string中会报一个异常
a="life is short, I use python"
print(a.index('e'))
#结果:3
print(a.index('e',18))
#结果:19
print(a.index('w'))
#结果:Traceback (most recent call last):
# File "C:\Users\asus\Desktop\pythondemo测试\小巷\one.py", line 121, in <module> # #print(a.index('w'))
#ValueError: substring not found
- str.replace
a="life is short, I use python"
print(a.replace('I use','You need'))
#结果:'life is short, You need python'
print(a.replace('t','T'))
#结果:'life is shorT, I use pyThon'
print(a.replace('t','T',1))
#结果:'life is shorT, I use python'
(9)字符串条件判断
- isalnum(),字符串由字母或数字组成,
- isalpha(),字符串只由字母组成,
- isdigit(),字符串只由数字组成
In [1]: a = "abc123"
In [2]: b = "ABC"
In [3]: c = 123
In [4]: a.isalnum()
Out[4]: True
In [5]: a.isalpha()
Out[5]: False
In [6]: a.isdigit()
Out[6]: False
In [7]: b.isalnum()
Out[7]: True
In [8]: b.isalpha()
Out[8]: True
In [9]: b.isdigit()
Out[9]: False>>> str = '01234'
>>> str.isalnum() #是否全是字母和数字,并至少有一个字符
True
>>> str.isdigit() #是否全是数字,并至少有一个字符
True
>>> str = 'string'
>>> str.isalnum() #是否全是字母和数字,并至少有一个字符
True
>>> str.isalpha() #是否全是字母,并至少有一个字符
True
>>> str.islower() #是否全是小写,当全是小写和数字一起时候,也判断为True
True
>>> str = "01234abcd"
>>> str.islower() #是否全是小写,当全是小写和数字一起时候,也判断为True
True
>>> str.isalnum() #是否全是字母和数字,并至少有一个字符
True
>>> str = ' '
>>> str.isspace() #是否全是空白字符,并至少有一个字符
True
>>> str = 'ABC'
>>> str.isupper() #是否全是大写,当全是大写和数字一起时候,也判断为True
True
>>> str = 'Aaa Bbb'
>>> str.istitle() #所有单词字首都是大写,标题
True
>>> str = 'string learn'
>>> str.startswith('str') #判断字符串以'str'开头
True
>>> str.endswith('arn') #判读字符串以'arn'结尾
True
(10)制表符转化
str.expandtabs()
例子:
a="L\tife is short, I use python"
print(a.expandtabs())#默认将制表符转化为8个空格
#结果:'L ife is short, I use python'
print(a.expandtabs(4))#加上参数,将制表符转化为对应个数的空格
#结果:'L ife is short, I use python'
(11)ASCII码和字符的转化
- chr():用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
- ord():将一个ASCII字符转换为对应的数字
chr(65)
#结果:'A'
ord('a')
#结果:97