一、字符串特点
- 内容不可修改
- 有下标,可以循环
password='123456' #内容不可修改
二、字符串常用方法
1、.strip()方法
- 默认去字符串两边的空格和换行符
print(password.strip()) #去掉字符串两边的空格和换行符
password=' 123456 7890 ' print(password.strip()) #结果: #123456 #7890 #中间的空格和换行符不去掉
- 不传内容,默认去掉空格和换行符,传入内容,就会去掉传入的内容
password='.jpg123456.jpg' print(password.strip('.jpg')) #结果: #123456
2、.lstrip()方法
- 只去掉左边的空格和换行
3、.rstrip()方法
- 只去掉右边的空格和换行
4、.upper()方法
- 使字符串全部转成大写
password='.jpg123456.jpg' print(password.upper()) #结果: #.JPG123456.JPG
5、.lower()方法
- 使字符串全部转成小写
password='.JPG123456.jpg' print(password.lower()) #结果: #.jpg123456.jpg
6、.capitalize()方法
- 使字符串首字母转成大写
password='agcPG123456.jpg' print(password.capitalize()) #结果: #Agcpg123456.jpg
7、.count()方法
- 统计内容在字符串里出现的次数
password='agcPG123456.jpg' print(password.count('g')) #结果: #2
8、.replace()方法
- 将旧内容替换为新内容
password='agcPG123456.jpg' print(password.replace('12345','上山打老虎')) #12345替换为:上山打老虎 #结果: #agcPG上山打老虎6.jpg
- 如果旧内容不存在,使用该方法也不报错,还是之前的字符串
password='agcPG123456.jpg' print(password.replace('hhh','上山打老虎')) #结果: #agcPG123456.jpg
去掉字符串中间的空格,可以使用该方法:
names='小红 小军 小黄 小兰' print(names.replace(' ','')) #结果: #小红小军小黄小兰
9、.endswith()方法
- 判断是否以内容为结尾
- 当内容存在时,返回为True;不存在时,返回为False
password='agcPG123456.jpg' print(password.endswith('jpg')) #结果: #True print(password.endswith('mp3')) #结果: #False
例子:
filename='a.mp4' if filename.endswith('.mp3'): pass else: print('不以.mp3结尾') #结果: #不以.mp3结尾
10、.startswith()方法
- 判断是否以内容为开头
password='agcPG123456.jpg' print(password.startswith('.')) #结果: #False
11、.format()方法
- 格式化输出,用{}包裹,可将内容输出
print('{name},{age}'.format(name='lrx',age=18)) #结果: #lrx,18
12、.split()方法
- 以内容为分隔符进行分割,分割后是list里的每一个元素
- 将字符串变成list
- 默认是按照空格分隔
names='小红,小军,小黄,小兰' print(names.split(',')) #结果: #['小红,小军,小黄,小兰']
- 如果分隔符不存在,仍然把字符串变成list,整个字符串是list里的一个元素
names='小红 小军 小黄 小兰' print(names.split(',')) #结果: #['小红 小军 小黄 小兰']
13、.join()方法
- 将list转成字符串
- 以规定的内容为分隔符进行连接
- 只要是循环的,都可以使用该方法,比如:字符串、列表、元组
- 必须类型全部是字符串,其中有其他的类型不可以
user=['abc','123','&*^'] res='.'.join(user) print(res) #结果: #abc.123.&*^
14、.zfill()方法
- 自动补零:比如内容里写3,则个位数前补2个零,十位数前补1个零
a=1 b=80 a1=str(a).zfill(3) b1=str(b).zfill(3) print('a1='+a1+',b1='+b1)
list1= [1,2,3,4,5,] for i in list1: print(str(i).zfill(2)) #结果: 01 02 03 04 05
15、.find()方法
- 找下标
- 如果无此内容时,使用该方法不会报错,会返回-1
16、.index()方法
- 找下标
- 如果无此内容时,使用该方法会报错
s='abcadef' print(s.find('a')) print(s.index('a',2)) #可以指定位置开始找 print(s.find('g')) #结果: #0 #0 #-1 print(s.index('g')) #结果: #ValueError: substring not found
17、.isdigit()方法
- 判断字符串是否是正整数,是正整数返回True,不是返回False(负整数是判断不了)
n='123.243' n2='-123' n3='123' print(n.isdigit()) print(n2.isdigit()) print(n3.isdigit()) #结果: #False #False #True
18、.islower()方法
- 判断字符串是否都是小写字母
19、.isupper()方法
- 判断字符串是否都是大写字母
s='abCdef' print(s.isupper()) print(s.islower()) s1='AGSDGS' s2='sdsdg' print(s1.isupper()) print(s2.islower()) print(s1.islower()) print(s2.isupper()) #结果: # False # False # True # True # False # False
20、.isalpha()方法
- 判断字符串中是否只有字母,如果只有字母,返回True,否则返回False
21、.isalnum()方法
- 判断字符串中是否有字母或者数字
print('abcd123'.isalpha()) #判断字符串里面是否只有英文 print('abc23454'.isalnum()) #判断字符串是否里面有英文或者由数字 print('abc'.isalnum()) print('124'.isalpha()) # False # True # True # True
22、.isspace()方法
- 判断字符串是否是空格,只包含空格
print('sdfs '.isspace()) print(' '.isspace()) #结果: # False # True
23、.splitlines()方法
- 以换行符分割字符串
s='abdc sdfsd' print(s) print(s.splitlines()) #以换行符分割字符串 #结果 abdc sdfsd ['abdc', 'sdfsd']
24、string模块
(1)string.ascii_letters:所有的大写、小写字母
(2)string.ascii_uppercase:所有的大写字母
(3)string.ascii_lowercase:所有的小写字母
(4)string.digits:所有的数字
(5)string.punctuation:所有的符号
import string print(string.ascii_letters) print(string.ascii_uppercase) print(string.ascii_lowercase) print(string.digits) print(string.punctuation) #结果: # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ # ABCDEFGHIJKLMNOPQRSTUVWXYZ # abcdefghijklmnopqrstuvwxyz # 0123456789 # !"#$%&'()*+,-./:;<=>?@[]^_`{|}~
三、字符串操作
1、字符串循环
-
利用元素下标进行循环
words='中秋节要上课' for w in words : print('每次打印的:',w) #结果: 每次打印的: 中 每次打印的: 秋 每次打印的: 节 每次打印的: 要 每次打印的: 上 每次打印的: 课
Python中的循环内置了下标,因此只用一个变量p就可以,p就是每次取下标时对应的元素值。
-
使用enumerate()枚举函数
使用enumerate()函数,会自动将字符串的下标和元素都显示出来:words='中秋节要上课'
for index,w in enumerate(words):
print('每次打印的:',index,w)
#结果:
每次打印的: 0 中
每次打印的: 1 秋
每次打印的: 2 节
每次打印的: 3 要
每次打印的: 4 上
每次打印的: 5 课
2、切片
字符串也有下标,使用上跟在列表中一致:
words='中秋节要上课' print(words[0]) print(words[::-1]) #-1代表取值到最后一个元素,不填写,默认从第一个开始取值,两个:加上-1 从后边开始取值 #结果: 中 课上要节秋中
3、存址方式
1)现象:
a='baizi' b=a a='niuniu' print(b)#结果为baizi print(a)#结果为niuniu
2)原因:
- 字符串是直接开辟新的内存空间,不会共用一块内存空间,因此修改了a的内容后,b不会变。
四、面试题
#判断一个字符串是否是回文,即:字符串和它反转后的字符串是否相等,如果相等就是回文。 s='上海自来水来自海上' # 1232321 # 1111 # 回文算法,反过来倒过去都一样 for i in range(10): s = input('请输入一个字符串:') if len(s)<2: print('字符串长度必须大于2') elif s==s[::-1]: print('是回文') else: print('不是回文')
任何付出都是值得的,会越来越好