字符串及正则表达式

字符串及正则表达式

一、字符串的常用操作

1. 字符串的特性
  • 不可变数据类型:字符串创建后不可修改,所有操作会返回新字符串。
    s = "Python"
    s[0] = "J"  # 报错:TypeError
    
2. 常用字符串方法
方法名描述说明
str.lower()str字符串全部转成小写字母,结果为一个新的字符串
str.upper()str字符串全部转成大写字母,结果为一个新的字符串
str.split(sep=None)str按照指定的分隔符sep进行分隔,结果为列表类型
str.count(sub)返回sub这个字符串在str中出现的次数
str.find(sub)查询sub这个字符串在str中是否存在,如果不存在结果为 -1,如果存在,结果为sub首次出现的索引
str.index(sub)功能与find()相同,区别在于要查询的子串sub不存在时,程序报错
str.startswith(s)查询字符串str是否以子串s开头
str.endswith(s)查询字符串str是否以子串s结尾
str.replace(old, new)使用new替换字符串str中所有的old字符串,结果是一个新的字符串
str.center(width, fillchar)字符串str在指定的宽度范围内居中,可以使用fillchar进行填充
str.join(iter)str插入到可迭代对象iter中每个元素之间,连接成一个新的字符串
str.strip(chars)从字符串str中去掉左侧和右侧chars中列出的字符
str.lstrip(chars)从字符串str中去掉左侧chars中列出的字符
str.rstrip(chars)从字符串str中去掉右侧chars中列出的字符

二、格式化字符串

1. 三种格式化方式
  • 占位符(%)
    name = "Alice"
    age = 25
    print("姓名:%s,年龄:%d" % (name, age))  # 姓名:Alice,年龄:25
    
  • str.format()方法
    print("坐标:({0}, {1})".format(3.14, 5))  # 坐标:(3.14, 5)
    
  • f-string(Python 3.6+)
    price = 19.99
    print(f"价格:¥{price:.2f}")  # 价格:¥19.99
    
2. 格式化字符串的详细格式
  • 语法{ [填充字符][对齐方式][宽度][,][.精度][类型] }
    符号作用示例
    :<左对齐f"{'Hi':<5}""Hi "
    :>10右对齐,总宽度10f"{3.14:>10}"" 3.14"
    :^居中对齐f"{'OK':^4}"" OK "
    :,千位分隔符f"{1000000:,}""1,000,000"
    :.2f保留2位小数f"{3.1415:.2f}""3.14"
    :%百分比格式f"{0.25:%}""25.000000%"
    :b二进制格式f"{10:b}""1010"

三、字符串的编码与解码

1. 编码(encode()
  • 将字符串转换为字节流(bytes类型):
    s = "你好"
    b = s.encode("utf-8")       # b'\xe4\xbd\xa0\xe5\xa5\xbd'
    
  • 错误处理方式
    # errors参数:strict(默认报错)、ignore(忽略错误)、replace(替换为?)
    s = "abc®"
    b = s.encode("ascii", errors="replace")  # b'abc?'
    
2. 解码(decode()
  • 将字节流转换回字符串:
    b = b'\xe4\xbd\xa0\xe5\xa5\xbd'
    s = b.decode("utf-8")       # "你好"
    

四、数据验证与处理

1. 数据验证方法
方法名描述说明
str.isdigit()所有字符都是数字(阿拉伯数字)
str.isnumeric()所有字符都是数字
str.isalpha()所有字符都是字母(包含中文字符)
str.isalnum()所有字符都是数字或字母(包含中文字符)
str.islower()所有字符都是小写
str.isupper()所有字符都是大写
str.istitle()所有字符都是首字母大写
str.isspace()所有字符都是空白字符(\n\t等)
2. 字符串拼接
  • 直接拼接
    s = "Hello" + " " + "World"  # "Hello World"
    
  • join()方法
    lst = ["2023", "10", "01"]
    s = "-".join(lst)            # "2023-10-01"
    

五、正则表达式

1. 元字符与限定符
  • 常用元字符
    元字符含义示例
    .匹配任意字符(除换行)a.c → “abc”, “a2c”
    ^匹配字符串开头^Hello → 匹配开头的Hello
    $匹配字符串结尾World$ → 匹配结尾的World
    \d匹配数字\d+ → “123”
    \w匹配字母/数字/下划线\w+ → “user123”
  • 限定符
    限定符含义示例
    *0次或多次a* → “”, “a”, “aaa”
    +1次或多次\d+ → “1”, “123”
    ?0次或1次a?b → “ab”, “b”
    {m,n}m到n次a{2,4} → “aa”, “aaa”
2. re模块常用函数
  • 匹配与搜索
    import re
    # re.match():从开头匹配
    print(re.match(r"\d+", "123abc"))  # 匹配到"123"
    # re.search():全局搜索
    print(re.search(r"abc", "xyzabc")) # 匹配到"abc"
    
  • 查找与替换
    # re.findall():返回所有匹配项
    lst = re.findall(r"\d+", "a=1, b=2")  # ["1", "2"]
    # re.sub():替换匹配项
    s = re.sub(r"\d+", "0", "a=1, b=2")   # "a=0, b=0"
    
  • 分割字符串
    parts = re.split(r"[,;]", "a,b;c")   # ["a", "b", "c"]
    

六、总结对比

功能方法/符号示例
字符串格式化f"{变量:格式}"f"{3.14:.2f}" → "3.14"
编码与解码encode() / decode()"你好".encode("utf-8")
正则匹配数字\d+re.findall(r"\d+", "a1b2") → [“1”,“2”]
字符串去空格strip()" Hi ".strip() → "Hi"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盐可颂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值