Python3:字符串处理函数


python3-字符串基本处理

基本功能处理:

  1. 转义
  2. 查找
  3. 格式化
  4. 分割

一、字符串转义和查找

import random

#  转义转义等基本操作 和字符串处理

"""
字符串保留区:
字符串常规操作
    find: 从左向右查找,只要遇到符合要求的则返回位置,没有找到符合任何要求的则返回-1
    rfind:从右向左
    count:计数
    index:表示查找,找不到会报错
    rindex:
"""
# 字符串
s1 = 'hello'
print(s1)
# 获取内存地址
print(id(s1))
s2 = s1
print(s2)
print(id(s2))
s3 = 'hello'
print(s3)
print(id(s3))
print(s1, s2, s3)
# is 比较
s4 = 'hello1'
print(s1 is s4)

# s1 更改了地址指向,存的是地址
s1 = 'word'
print(s1, s2, s3)

# 字符串获取 截取
'''
字符串索引机制:
    1. 0~len(s) -1
    2. -len(s) ~ -1
'''
s1 = "abcdefg"

# 字符串索引
print(s1[4])
print(s1[-3])
# 字符串长度
print(len(s1))

'''
切片:字符串,列表
格式:字符串变量[start:end:step] 
    step 正数  从左向右
    step 负数 从右向左
'''
s1 = "ABCDEFGH"
print(s1[1:4])  # BCD
print(s1[:5])  # 默认从0开始
# 输出EFGH
print(s1[4:len(s1)])
print(s1[4:])  # index 到尾
# 从头到位取数
print(s1[:])
print(id(s1))  # 地址一样
print(id(s1[:]))  # 地址一样
# 去头去尾
print(s1[1:-1])
print(s1[1:])

# 步长:正数
print(s1[1: -1:2])
print(s1[1::2])

# 步长:负数
print(s1[::-2])
print(s1[::-1])
print(s1[1:-1:-2])
print(s1[-1:1:-2])
print(s1[-1::-2])
print(s1[1::-2])

print("常规操作-", "***" * 20)

'''
字符串常规操作
    find: 从左向右查找,只要遇到符合要求的则返回位置,没有找到符合任何要求的则返回-1
    rfind:从右向左
    count:计数
    index:表示查找,找不到会报错
    rindex:
'''
path = "https://www.bilibili.com/video/BV1R7411F7JV?p=32&spm_id_from=pageDriver"

# find、index、rfind、rindex
# 从左向右
i = path.find('_')
print(i)
image_name = path[i + 1:]
print(image_name)
print("**" * 20)
# 从右向左
i = path.rfind('_')
image_name = path[i + 1:]
print(image_name)

# 查找path 中右几个_:count 指定字符的个数:
count = path.count("_")
print(count)

# index  未找到,报错:substring not found
# i = path.index("#") # 报错

i = path.index("pageDriver")
print(i)

print("判断操作-", "***" * 20)

'''
判断:startswith,endswith,isalpha,isdigit,isalnum,isspace
返回值都是布尔类型(True,False)

    startswith:判断是以什么开头
    endswith:以什么结尾
'''
result = path.startswith("http")
print(result)

'''
 模拟文件上传,键盘输入上传文件的名称,判断文件名是否大于6位以上,扩展名是否是:jpg,gif,png格式
 如果不是则提示上传失败,如果名字不满足条件,而扩展名满足条件则随机生成一个6位数字组成的文件名,打印成功上传xxx.png
 
 注意:
    + 连接符:两边的类型必须一致
'''

file_name = input("请输入上传文件名:")
index = file_name.rfind(".")
name = file_name[:index]
suffix = file_name[index + 1:]
print(name, len(name), suffix)

suffixs = ["jpg", "gif", "png"]
if not suffixs.__contains__(suffix):
    print("格式不对上传失败!")
else:
    if len(name) > 6:
        new_name = ""
        i = 1
        while i <= 6:
            new_name += str(random.randint(0, 9))
            i += 1
        print(new_name)
        print("新的文件全名", new_name + "." + suffix)
    else:
        print("文件全名", name + "." + suffix)

print("##" * 20, "代码重构", "##" * 20)

file_name = input("请输入上传文件名:")
index = file_name.rfind(".")
name = file_name[:index]
suffix = file_name[index + 1:]
print(name, len(name), suffix)

suffixs = ["jpg", "gif", "png"]
if not suffixs.__contains__(suffix):
    print("格式不对上传失败!")
else:
    if len(name) > 6:
        name = str(random.randint(100000, 999999))
        print(name)
        print("新的文件全名", str(name) + "." + suffix)
    print("文件全名", name + "." + suffix)

print("##" * 20, "代码重构:生成文件名带字母", "##" * 20)

file_name = input("请输入上传文件名:")
index = file_name.rfind(".")
name = file_name[:index]
suffix = file_name[index + 1:]
print(name, len(name), suffix)

suffixs = ["jpg", "gif", "png"]
if not suffixs.__contains__(suffix):
    print("格式不对上传失败!")
else:
    if len(name) > 6:
        name = ''
        while len(name) < 6:
            index = random.randint(0, 122)
            print("index->", index)
            if 0 <= index <= 9:
                name += str(random.randint(0, 9))  # 0-9数字
                continue
            if 65 <= index <= 90:
                name += str(chr(random.randint(65, 90)))  # 小写字母
                continue
            if 97 <= index <= 122:
                name += str(chr(random.randint(97, 122)))  # 大写字母
                continue
        print(name)
        print("新的文件全名", str(name) + "." + suffix)
    print("文件全名", name + "." + suffix)

二、字符串空白、数字大小写判断

# 字符串 处理

"""
isalpha(): 是否纯字母组成
isdigit():是否是纯数字组成
isalnum():是否是数字、字母组成;不能包含特殊符号
isspace():判断是否是空白
isupper(): 是否全是大写字母
islower():是否全是小写字母
"""
s = 'A12345'
m = 'ABCD'
n = '12345'
print(s.isalpha())
print(s.isdigit())
print(s.isalnum())
print(m.isalpha())
print(n.isdigit())
print(s.isspace())
print(m.isupper())
print(m.islower())

'''
练习:登录(admin123/18700191999  123456)
    用户名或者手机号码输入:
        输入用户名:长度大于6位,全部小写,首字母不能是数字;
        手机号码:纯数字,11位;
    密码:密码必须是6位数字       
    以上符合条件,则验证用户名加密码是否是正确的
'''

username = 'admin123'
phone = '18700191999'
pwd = '123456'

n = 2
while n >= 0:
    login_type = input("请登录(登录方式: 1:手机号密码/ 2: 用户名密码):")
    if login_type == '1':
        name = input("请输入手机号:")
        password = input("请输入密码:")
        # 手机号密码登录
        if name.isdigit() and len(name) == 11 and password.isdigit() and len(password) == 6:
            if phone == name and pwd == password:
                print("登录成功!")
                break
            else:
                print("用户名或密码不对,还有%d次机会!" % n)
                n -= 1
                continue
        else:
            print("用户名/密码格式错误,还有%d次机会!" % n)
            n -= 1

    elif login_type == '2':
        name = input("请输入用户名:")
        password = input("请输入密码:")
        # 用户名号密码登录
        if name.islower() and len(name) > 6 and not name[0].isdigit() and password.isdigit() and len(password) == 6:
            if username == name and pwd == password:
                print("登录成功!")
                break
            else:
                print("用户名或密码不对,,还有%d次机会!" % n)
                n -= 1
                continue
        else:
            print("用户名/密码格式错误,还有%d次机会!" % n)
            n -= 1
            continue
    else:
        print("输入类型有误,请重新输入")


三、字符串切割

# 字符串切割
"""
替换内容:replace(old、new、count)默认全部替换,也可以通过count 制定替换的次数
切割字符串:
    split(分隔符,maxsplit): maxsplit  最大分隔次数
    rsplit: 右切割
    splitlines: 按照行切分
    partition: 按照分隔符切换成三部分,包含分隔符
    rpartition
修改大小写:
    capitalize: 第一个字母转大写
    title: 每个首字母带写
    upper: 转大写
    lower:转小写
"""

s = '张三说:王八蛋你来唱歌吧,王九蛋你来跳舞吧!'

# 替换王八蛋
result = s.replace('王八蛋', '***')
print(result)
# 替换王八蛋、 替换王九蛋 循环加里列表
result = s.replace('王九蛋', '***')
print(result)

lst = s.split(":")
print(lst)

s = '''aaaaaaaaaaaaaa
sssssssssssss
dddddddddddd
'''
result = s.splitlines()
print(result)

s = '张三说:王八蛋你来唱歌吧,王九蛋你来跳舞吧!'
result = s.partition(":")
print(result)

s = 'hello world!'
print(s.title())

print(s.capitalize())

四、字符串拼接

# 字符串拼接
"""
空格处理:
    ljust: 左对齐
    rjust:右对齐
    center:对齐方式
    lstrip:左侧空格去除
    rstrip:右侧空格去除
    strip: 处理空格(移除收尾空格)

字符串拼接:(处理列表)
    join:

"""

username = input('用户名:')
print(len(username))
username = username.strip()  # 处理前后空格
print(len(username))
username = username.lstrip()  # 处理左侧空格
print(len(username))
username = username.rstrip()  # 处理右侧空格
print(len(username))

s = 'hello world'
result = s.center(30)  # 居中对齐
print(result)
result = s.ljust(30)  # 左对齐
print(result)
result = s.rjust(30)  # 右对齐
print(result)

result = '欢迎来到游戏世界'.center(30, '-')
print(result)

a = 'hello'
b = 'world'
result = '+'.join([a,b])
print(result)

五、字符串格式化

# 字符串格式化
"""
1. %d %s %f:
    print('susan:%s' %sss)
2. format
"""

name = 'sandbox'
age = 18

result = '{}今年{}岁'.format(name, age)  # 占位
print(result)
result = '{0}今年{1}岁,张三也{1}岁'.format(name, age)  # 变量复用
print(result)
result = '{name}今年{age}岁,张三也{age}岁'.format(name='sandbox', age=18)  # 变量名形式,参数名必须有关键字参数:name='sandbox'
print(result)

总结

以上就是python关于字符串方面的基本处理,本文仅仅简单介绍了python3的字符串处理函数的使用,而python3提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值