Python之字符串操作

一、字符串特点

  •  内容不可修改
  • 有下标,可以循环
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('不是回文')

任何付出都是值得的,会越来越好

原文地址:https://www.cnblogs.com/brf-test/p/12350372.html