*python中的字符串

本文详细介绍了Python中字符串的基本概念、格式、下标索引、切片操作,以及字符串的常见方法,如find、index、count、replace、split等,还包括了字符串的开始和结束判断、大小写转换、去除空格、字母数字判断和长度获取等功能。
摘要由CSDN通过智能技术生成
  • 什么是字符串,字符串的格式

多个字符就是字符串.
格式:变量名='字符串' 或者:变量名="字符串"
# 例如:
name='张三'
des='张三是个万能的名字'
password='123456'
# ... ...都需要用字符串来存储
详见里面的格式化输出

  • 字符串的下标索引

下标==索引

字符串:

下标索引:

0

1

2

3

str='我喜欢你' 
print(str[0])    # 根据下标将字符取出:我
print(str[3])    # 你
print(str[-1])    # 加负号指从后往前,也就是倒数第一个:你
print(str[-2])    # 欢
  • 字符串的切片

切片的语法:[起始:结束:步长]
切片的取值区间为左闭右开
步长如果为负数,则从后往前取值,若只填写步长且步长为负,则将字符串逆置
# 注意下标从0开始
str='三国水浒红楼西游'
print(str[0]+str[1])    # 下标拼接取出;输出:三国

# 切片取值区间为左闭右开;切片不写步长的时候默认步长为1;
print(str[2:4])    # 输出:水浒
print(str[0:10])    # 如果切多,不报错.也没有输出结果
print(str[2:5:2])    # 每2步取一个值.输出:水红

# 反转:步长如果为负数,结果为从后往前取值,若只填写步长且步长为负1,则将字符串逆置
print(str[::-1])    # 只填写步长且步长为负1,将字符串逆置.输出:游西楼红浒水国三
print(str[::-2])    # 输出:游楼浒国
print(str[5:3:-2])    # 反转后,取值范围也要换过来写,否则结果为空.输出:楼
  • 字符串常见方法

  • find查找

find从左侧查找字符\字符串是否存在
调用:变量.find('字符\字符串')
rfind:从右侧查找字符
rfindex:从右侧查找字符串
a='123456789'
print(a.find('789'))    # 输出:6.返回的数据类型是int类型,结果是所查内容第一个字符7的下标
print(a.find('-5'))    # 输出结果为-1.-1代表没有查询到
str = '德华润发成龙国荣星驰'
name = input('输入你喜欢的明星:\n')
if str.find(name) != -1:    # 索引不等于-1,存在
    print('找到了')
else:
    print('没找到')
  • index查找

index和find一样,区别是index找不到会报错.
如果找到,返回第一个字符的索引;否则报错

  • count查找个数

检测要查字符\字符串在字符串中出现的次数
s='aaaaaabbbbbbccccc'
print(s.count('a'),s.count('b'))    # 输出:6 6
print(s.count('d'))    # 如果没找到,输出:0
  • replace替换

把mystr中的str1替换成str2,如果count指定,则替换不超过count次
语法:mystr.replace (str1,str2,count)
替换完并没有修改原来的字符串,而是得到一个新的字符串,返回值仍然为str类型
a = '999999999'  # 9个9
b = a.replace('9', '1', 1)  # 除了修改次数,需要替换的两个内容都要是str格式
c = a.replace('9', '1')  # 不指定修改次数,就会全部修改
print(b, c)  # 输出:199999999 111111111

# 连续替换
str = '我 中 意 你 , 但 是 我 喜 欢 周 润 发。'
newStr = str.replace(' ', '').replace(',', '。')  # 先''空值将空格删掉,然后用.replace继续将','替换成'。'
print(newStr)
  • split分割

通过符号或者文字进行分割内容,返回值类型是list类型(列表类型)
name.split(",") 全部分隔[中文,中文符号,英文符号]
name.split("hello",1) 分隔第一个
a = '1 2 3 4 5 6 7 8 9'
print(a.split(' '))  # 按照空格将字符分开。输出:['1', '2', '3', '4', '5', '6', '7', '8', '9']
b = '1a2a3a4a5a6a7a8a9'
print(b.split('a', 2))  # 按照'a'将字符分开,并且只分割前两个。输出:['1', '2', '3a4a5a6a7a8a9']
  • 字符串判断开始和结束start_ends

startswith:以xx开头,返回值类型是bool类型
endstswith:以xx结尾,返回值类型是bool类型
a = '123456789'
b = '123456789@xx.com'
print(a.startswith('123'))  # a以123开头吗。输出:True
print(b.endswith('abc'))  # b以abc结束吗。输出:False
  • lower

将所有大写字母换成小写
  • upper

将所有小写字母换成大写
  • strip

去除左右空格
a = '   哈 哈   '
print(a.strip())  # 替换左右空格,中间的空格替换不了.输出:哈 哈
print(a.strip().replace(' ', ''))  # 我们只需要先将左右空格替换掉,然后再将空格替换为空就可以.输出:哈哈
# 当然直接用replace也可以,此处只是为了演示strip
  • isalpha\isdigit\isalnum

isalpha:判断是否都是字母/汉字(字母和汉字组合),如果是,返回True,如果不是,返回False
a = 'abc123'
print(a.isalpha())  # a中有数字。输出:False
b = 'abc一二三'
print(b.isalpha())  # b为纯字母汉字。返回:True
isdigit:判断是否都是数字,如果是,返回True,如果不是,返回False
a = '123'
b = 'czxc'
print(a.isdigit())  # 全是数字输出:True
print(b.isdigit())  # 不全是数字输出:False
isalnum:判断是否都是数字汉字字母.如果是返回True,否则返回False
a = 'cxz123张三'
b = '123 das仨'
print(a.isalnum())  # 输出:True
print(b.isalnum())  # 有空格,输出:False
案例:判断年龄,不合法提示
age = input('输入年龄:\n')  # 这里如果转换int类型以后isdigit会报错
a = age.isdigit()
if a == True:  # 当输入内容为纯数字的时候
    int(age)  # 转换数字类型
    if age <= 0 or age >= 140:
        print('不合法')
    else:
        print('合法')
else:
    print('输入数字')
  • len()>python内置非字符串方法

获取长度
使用方法:len(变量)
a = '123456789'
b = '共产主义万岁,世界人民大团结万岁'
print(len(a))  # 输出:10
print(len(b))  # 输出:16
输入6-8位的密码,要求数字和字符组成
# 先不考虑汉字,下面会讲
pwd = input('请输入6-8位的密码,要求数字和字符组成')
if len(pwd) < 6 or len(pwd) > 18:
    print('长度不合法请重新输入')
else:
    # isalnum:判断是否是数字和字符
    # isdigit:判断是否是数字,不能有字符
    # isalpha:判断是否是字符,不能有数字
    if pwd.isalnum() and (not pwd.isalpha()) and (not pwd.isdigit()):
        print('密码合法')
    else:
        print('密码不合法')
  • 案例:

案例:输入一段数字和字母汉字组合,判断数字和字母汉字各有多少个
a = '123456ueiqwopsnafkl阿达是的接口'
alphaCount = 0  # 字母汉字的个数
digitCount = 0  # 数字的个数
for i in a:  # 遍历a内的字符
    if i.isalpha():  # 如果是字母汉字
        alphaCount += 1
    elif i.isdigit():  # 如果是数字
        digitCount += 1
print(alphaCount, digitCount)
截取字符串 str='风驰天下,大运摩托(小时候洗脑的广告)!!!'
要求:
1:取出)之前的内容
2:取出( 之后的内容
3:取出()之间的内容
str = '风驰天下,大运摩托(小时候洗脑的广告)!!!'

# 1:取出)之前的内容
# 思路:先找到)之前的索引值,通过切片的形式切出来
index1 = str.find(')')
str1 = str[0:index1]
print(str1)  # 风驰天下,大运摩托(小时候洗脑的广告

# 2:取出( 之后的内容
# 思路:先找到(的索引值,再通过切片的形式切出来
index2 = str.find("(")
str2 = str[index2 + 1:]  # 内容为空指全部的值
print(str2)  # 小时候洗脑的广告)!!!

# 3:取出()之间的内容
# 思路:先找到(的索引值,再找到)的索引值,取中间的部分
index1 = str.find(')')
index2 = str.find('(')
str3 = str[index2 + 1:index1]
print(str3)  # 小时候洗脑的广告
  • 汉字排除

需要用到ascll码
# 查看字符对应的ascll码
ord('字符')

ascll码表

输入6-8位的密码,要求数字和字符组成
# 同样是这个示例
pwd = input('请输入6-8位的密码,要求数字和字符组成')
if len(pwd) < 6 or len(pwd) > 18:
    print('长度不合法请重新输入')
else:
    # isalnum:判断是否是数字和字符
    # isdigit:判断是否是数字,不能有字符
    # isalpha:判断是否是字符,不能有数字
    if pwd.isalnum() and (not pwd.isalpha()) and (not pwd.isdigit()):
        flag = True  # 默认合法--设置标志类
        for p in pwd:
            if not ord(p) <= 122:  # ascll码小于122肯定不是汉字,汉字ascll码都在122以上
                flag = False
        if flag:  # 本来应该为flag==True。但是因为flag本身就为bool类型所以可以省略书写
            print('密码合法')
        else:
            print('密码不合法')
    else:
        print('密码不合法')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值