字符串及正则表达式

字符串及正则表达式

一、字符串的常用操作

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 右对齐,总宽度10 f"{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"

你可能感兴趣的:(Python学习笔记,python)