一篇文章带你真正了解str

一、字符串的大小写转换

处理文本时,经常需要调整字母的大小写,Python 的字符串方法能轻松搞定这些操作,而且都会返回一个新的字符串,不会改变原来的字符串。

bash 复制代码
# 首字母大写,其他字母变小写
print("hello WORLD".capitalize())  # 输出:Hello world
# 所有字母变小写(多语言适用,比如德语、法语等特殊字母)
print("GUTEN TAG".casefold())  # 输出:guten tag
# 每个单词的首字母大写(空格或标点隔开的都算单词)
print("python is fun".title())  # 输出:Python Is Fun
# 大小写互换
print("AbCdEf".swapcase())  # 输出:aBcDeF
# 所有字母变成大写
print("hello".upper())  # 输出:HELLO
# 所有字母变成小写(支持西班牙语等非英语字母)
print("¡HOLA MUNDO!".lower())  # 输出:¡hola mundo!

二、字符串的对齐与填充

有时候需要让字符串按照固定宽度对齐,或者用特定字符填充,这些方法在排版、生成报表时特别有用。

bash 复制代码
# 居中对齐,总宽度5,不够的地方补空格
# 如果字符串长度超过5,就原样输出
print("abc".center(5))  # 输出: abc  (两边各一个空格)
# 右对齐,总宽度5,左边补空格
print("abc".rjust(5))  # 输出:  abc  (左边两个空格)
# 在字符串前面填充0,总宽度5(数据报表常用)
print("123".zfill(5))  # 输出:00123
# 负数的话,负号后面补0(负号算一个字符)
print("-123".zfill(5))  # 输出:-0123
# 左对齐,总宽度6,右边补*
print("abc".ljust(6, "*"))  # 输出:abc***
# 右对齐,总宽度6,左边补*
print("abc".rjust(6, "*"))  # 输出:***abc

三、字符串的查找与计数

想知道某个字符或子串在字符串里出现了多少次,或者在什么位置,这些方法就能派上用场,还能通过start和end参数限定查找范围。

python 复制代码
# 统计子串出现的次数
print("ababa".count("aba"))  # 输出:1(重叠的不算,比如"ababa"里"aba"只算1次)
# 限定查找范围:从索引2开始,到索引4结束(左闭右开)
print("ababa".count("a", 2, 4))  # 输出:1(只看"aba"中的"a")
# 从左往右找,返回首次出现的索引,没找到返回-1
print("hello".find("l"))  # 输出:2(索引从0开始算)
# 从右往左找,返回首次出现的索引
print("hello".rfind("l"))  # 输出:3
# 和find类似,但没找到会报错
try:
    print("hello".index("x"))
except ValueError:
    print("找不到'x'")  # 会执行这条,因为"hello"里没有"x"

四、字符串的替换与转换

这些方法能帮你替换字符串里的内容,或者按照规则转换字符。

python 复制代码
# 将制表符\t转换成4个空格(默认就是4个,也可以改)
print("a\tb\tc".expandtabs())  # 输出:a    b    c
# 把所有"a"换成"b"
print("aaa".replace("a", "b"))  # 输出:bbb
# 只替换前2个"a"
print("aaa".replace("a", "b", 2))  # 输出:bba
# 生成转换表:a→1,b→2,c→3,同时删除d
table = str.maketrans("abc", "123", "d")
# 用转换表替换字符
print("abcd".translate(table))  # 输出:123(d被删掉了)

五、字符串的判断与检测

这些方法返回True或False,用来判断字符串是否符合某种规则,比如是不是全是字母、是不是以某个子串开头等。

python 复制代码
# 判断是否以"he"开头
print("hello".startswith("he"))  # 输出:True
# 判断是否以"lo"结尾
print("hello".endswith("lo"))  # 输出:True
# 判断是不是标题格式(每个单词首字母大写)
print("Hello World".istitle())  # 输出:True
# 判断是否全是大写字母
print("HELLO".isupper())  # 输出:True
# 判断是否只包含字母(没有数字、符号、空格)
print("abc".isalpha())  # 输出:True
# 判断是否全是空白(空格、换行符\n、制表符\t等)
print("  \t\n".isspace())  # 输出:True
# 判断是否都是可打印字符(转义字符如\n不能打印)
print("abc123!".isprintable())  # 输出:True
# 判断是否只包含字母或数字(isdecimal/isdigit/isnumeric任一为True则返回True)
print("abc123".isalnum())  # 输出:True
# 判断是否是合法的变量名
print("user_name".isidentifier())  # 输出:True
# 判断是否是Python的关键字(比如if、for)
import keyword
print(keyword.iskeyword("if"))  # 输出:True

六、字符串的清理与分割

这些方法可以去掉字符串里多余的字符,或者把字符串拆分成列表、元组。

bash 复制代码
# 去掉左侧的空格
print("  abc  ".lstrip())  # 输出:abc  (右边还有空格)
# 去掉右侧的空格
print("  abc  ".rstrip())  # 输出:  abc(左边还有空格)
# 去掉两侧的空格
print("  abc  ".strip())  # 输出:abc
# 去掉两侧的#号
print("###abc###".strip("#"))  # 输出:abc
# 精确去掉开头的"test_"
print("test_file.txt".removeprefix("test_"))  # 输出:file.txt
# 精确去掉结尾的".txt"
print("test.txt".removesuffix(".txt"))  # 输出:test
# 从左到右以","为分隔符,打包成元组(前缀, 分隔符, 后缀)
print("a,b,c".partition(","))  # 输出:('a', ',', 'b,c')
# 从右到左分割
print("a,b,c".rpartition(","))  # 输出:('a,b', ',', 'c')
# 从左到右以","为分隔符,打包成列表
print("a,b,c".split(","))  # 输出:['a', 'b', 'c']
# 只分割1次
print("a,b,c,d".split(",", 1))  # 输出:['a', 'b,c,d']
# 以换行符为分隔符(不管是\n还是\r\n都能识别)
print("a\nb\r\nc".splitlines())  # 输出:['a', 'b', 'c']

七、字符串的连接与格式化

拼接多个字符串,或者按特定格式显示字符串,这些方法很实用。

python 复制代码
# 用"-"把列表里的元素拼起来
print("-".join(["a", "b", "c"]))  # 输出:a-b-c
# 用空字符串拼接(直接连起来)
print("".join(("x", "y", "z")))  # 输出:xyz
# 用format方法格式化字符串
print("{} + {} = {}".format(1, 2, 3))  # 输出:1 + 2 = 3
# 居中对齐,总宽度10
print("{:^10}".format(250))  # 输出:    250    (两边各4个空格)
# 用f-string格式化(Python 3.6+,更简洁)
name = "Alice"
print(f"Hello, {name}!")  # 输出:Hello, Alice!
# 直接在{}里写表达式
print(f"1+2={1+2}")  # 输出:1+2=3

总结

Python 的字符串方法就像一套强大的工具,能帮你处理各种文本任务。从简单的大小写转换,到复杂的格式排版,都能轻松应对。记住这些方法的功能和用法,多动手试试,处理字符串时就能事半功倍啦。

相关推荐
天天爱吃肉82181 小时前
效率提升新范式:基于数字孪生的汽车标定技术革命
python·嵌入式硬件·汽车
lemon_sjdk2 小时前
Java飞机大战小游戏(升级版)
java·前端·python
格鸰爱童话2 小时前
python+selenium UI自动化初探
python·selenium·自动化
倔强青铜三2 小时前
苦练Python第22天:11个必学的列表方法
人工智能·python·面试
倔强青铜三2 小时前
苦练Python第21天:列表创建、访问与修改三板斧
人工智能·python·面试
Pi_Qiu_3 小时前
Python初学者笔记第十三期 -- (常用内置函数)
java·笔记·python
永远孤独的菜鸟4 小时前
# 全国职业院校技能大赛中职组“网络建设与运维“赛项项目方案
python
mit6.8244 小时前
[Meetily后端框架] 多模型-Pydantic AI 代理-统一抽象 | SQLite管理
c++·人工智能·后端·python
一眼万里*e4 小时前
Python 字典 (Dictionary) 详解
前端·数据库·python
mortimer5 小时前
Python 正则替换陷阱:`\1` 为何变成了 `\x01`?
python·正则表达式