python数据类型-字符串

开篇

哈喽大家好!歪小王又来分享了,今天开始,我将以一种幽默有趣的方式,跟大家一起重温下python基础

咱们的第一站,就是Python世界里最基础、最常用的元素------字符串!它就像乐高积木一样,是构建代码世界的必备材料。别看它只是一个个字符,掌握了它的操作方法,你就能用代码搭建出各种神奇的城堡!

创建字符串:给文字施魔法

在Python里,将文字变成字符串的方式非常简单:

  • 单引号大法: 'Hello, world!',简单明了!
  • 双引号大法: "Python is fun!",和单引号效果一样,随你喜好选择!
  • 三引号大法:
python 复制代码
"""这是一个多行字符串,
可以写诗,
也可以写代码。"""

三引号就像写作文一样,可以换行,非常方便。

访问字符串:精准定位每个字符

字符串就像一本字典,每个字符都有自己的编号,叫做索引。我们可以通过索引来精准访问字符串中的每个字符。例如:

  • string[0] 获取字符串 string 的第一个字符,结果为 'H'。
  • string[-1] 获取字符串 string 的最后一个字符,结果为 '!'。

想要获取字符串的一部分,可以使用切片的方法。例如:

  • string[1:5] 获取字符串 string 中第2到第5个字符,结果为 'ello'。
  • string[:5] 获取字符串 string 中前5个字符,结果为 'Hello'。
  • string[6:] 获取字符串 string 中从第7个字符开始到结尾的部分,结果为 'world!'。

字符串操作:像玩积木一样

  • 拼接

    就像用胶水把积木粘在一起,+ 运算符可以将多个字符串连接成一个新的字符串。 这种方法简单直观,适用于所有 Python 版本。

python 复制代码
first_name = "Alice"
last_name = "Wonderland"
full_name = first_name + " " + last_name  # 结果为 "Alice Wonderland"

​ 你也可以用 += 运算符将一个字符串追加到另一个字符串的末尾.

python 复制代码
message = "Hello"
message += ", world!"  # 结果为 "Hello, world!"
  • 格式化

​ 格式化就像给积木上色,让你的字符串更加丰富多彩。 Python 提供了多种格式化方法,适用于不同的场景和 Python 版本。

%-formatting (旧式字符串格式化)

​ %-formatting 是 Python 早期版本中常用的格式化方法,使用 % 运算符和占位符来插入变量和表达式。 虽然这种方法在 Python 3 中仍然可用,但建议使用更现代的 f-string 或 str.format() 方法。

python 复制代码
name = "Bob"
age = 25
message = "Hi, I'm %s and I'm %d years old." % (name, age)
# 结果为 "Hi, I'm Bob and I'm 25 years old."

str.format() 方法 (Python 2.6+ 支持)

str.format() 方法是 Python 2.6 版本引入的,使用大括号 {} 作为占位符,并通过 .format() 方法传入对应的变量或表达式。

python 复制代码
name = "Charlie"
age = 30
message = "My name is {} and I am {} years old.".format(name, age)
# 结果为 "My name is Charlie and I am 30 years old."

str.format() 方法还支持多种格式化选项,例如指定宽度、精度、对齐方式等,可以更精确地控制字符串的输出格式。

f-string (YYDS的格式化字符串字面值) (Python 3.6+ 支持)

f-string 是 Python 3.6 版本引入的新特性,也是最简洁直观的格式化方法。 直接在字符串中嵌入变量和表达式,使用 f 前缀和花括号 {} 作为占位符。

python 复制代码
name = "David"
age = 40
message = f"Hi, I'm {name} and I'm {age} years old."
# 结果为 "Hi, I'm David and I'm 40 years old."

你也可以在花括号内进行简单的计算或调用函数。

python 复制代码
price = 10.99
quantity = 2
total = f"Total price: ${price * quantity:.2f}"  # 结果为 "Total price: $21.98"
  • 重复

​ 就像把相同的积木复制多份,* 运算符可以将一个字符串重复多次。 这种方法适用于所有 Python 版本。

python 复制代码
word = "Python"
repeated_word = word * 3  # 结果为 "PythonPythonPython"

​ 你可以使用这个技巧来创建分割线或其他重复模式。

python 复制代码
separator = "-" * 20
print(separator)  # 输出 "--------------------"
  • 成员运算符

​ 就像检查一个积木是否在某个集合中,成员运算符 in 和 not in 可以用来判断一个字符或子串是否包含在另一个字符串中。 这种方法适用于所有 Python 版本。

python 复制代码
text = "Hello, world!"
"world" in text  # 结果为 True
"python" not in text  # 结果为 True

​ 这对于搜索和过滤字符串非常有用。

字符串方法:内置的魔法工具

Python还为字符串准备了一套魔法工具,让你轻松处理各种情况:

  • 查找:

​ find(substring, start=0, end=len(string)):查找子串 substring 第一次出现的位置,如果没有找到则返回 -1。

python 复制代码
text = "Python is fun!"
position = text.find("fun")  # 结果为 10
position = text.find("Java")  # 结果为 -1

​ index(substring, start=0, end=len(string)):与 find() 类似,但如果没有找到子串会抛出异常。

python 复制代码
text = "Python is fun!"
position = text.index("fun")  # 结果为 10
# text.index("Java")  # 会抛出 ValueError 异常

​ rfind(substring, start=0, end=len(string)):查找子串最后一次出现的位置。

python 复制代码
text = "banana"
position = text.rfind("a")  # 结果为 5

​ rindex(substring, start=0, end=len(string)):与 rfind() 类似,但如果没有找到子串会抛出异常。

python 复制代码
text = "apple pie"
# 查找 'p' 最后一次出现的位置 (索引 6)
position = text.rindex("p")
# 查找不存在的子串 'z' 会引发 ValueError 异常
text.rindex("z")
  • 替换:

replace(old, new, count=-1):将字符串中的子串 old 替换为 new,count 指定替换的次数,默认替换所有出现的子串。

python 复制代码
text = "Hello, world!"
new_text = text.replace("world", "Python")  # 结果为 "Hello, Python!"
new_text = text.replace("o", "a", 1)  # 替换第一个 "o",结果为 "Hella, world!"
  • 大小写转换:

upper():将字符串转换为大写。

python 复制代码
text = "Python is fun!"
uppercase_text = text.upper()  # 结果为 "PYTHON IS FUN!"

lower():将字符串转换为小写。

python 复制代码
text = "Python is Fun!"
lowercase_text = text.lower()  # 结果为 "python is fun!"

capitalize():将字符串首字母大写,其余字母小写。

python 复制代码
text = "python is fun!"
capitalized_text = text.capitalize()  # 结果为 "Python is fun!"

title():将字符串中每个单词的首字母大写。

python 复制代码
text = "python is fun!"
titled_text = text.title()  # 结果为 "Python Is Fun!"
  • 分割与连接:

split(sep=None, maxsplit=-1):按照分隔符 sep 将字符串分割成多个子串,maxsplit 指定最大分割次数。

python 复制代码
text = "apple,banana,cherry"
fruits = text.split(",")  # 结果为 ["apple", "banana", "cherry"]
fruits = text.split(",", maxsplit=1)  # 结果为 ["apple", "banana,cherry"]

rsplit(sep=None, maxsplit=-1):与 split() 类似,但从字符串的右侧开始分割。

python 复制代码
text = "apple/banana/cherry"
fruits = text.rsplit("/", maxsplit=1)  # 结果为 ["apple/banana", "cherry"]

join(iterable):将可迭代对象中的字符串连接成一个字符串,使用调用该方法的字符串作为连接符。

python 复制代码
fruits = ["apple", "banana", "cherry"]
text = "-".join(fruits)  # 结果为 "apple-banana-cherry"
  • 判断:

isalpha():判断字符串是否只包含字母。

python 复制代码
text = "Python"
is_alpha = text.isalpha()  # 结果为 True

isdigit():判断字符串是否只包含数字。

python 复制代码
text = "12345"
is_digit = text.isdigit()  # 结果为 True

isalnum():判断字符串是否只包含字母和数字。

python 复制代码
text = "Python123"
is_alnum = text.isalnum()  # 结果为 True

isspace():判断字符串是否只包含空白字符。

python 复制代码
text = "   "
is_space = text.isspace()  # 结果为 True
  • 去除空白字符:

strip([chars]):去除字符串开头和结尾的空白字符,chars 参数可以指定要移除的字符集。

python 复制代码
text = "  Hello, world!  "
stripped_text = text.strip()  # 结果为 "Hello, world!"

lstrip([chars]):去除字符串开头的空白字符。

python 复制代码
text = "  Hello, world!"
lstripped_text = text.lstrip()  # 结果为 "Hello, world!  "

rstrip([chars]):去除字符串结尾的空白字符。

python 复制代码
text = "  Hello, world!  "
rstripped_text = text.rstrip()  # 结果为 "  Hello, world!"

结语:无所不能的字符串应用

学会了字符串的魔法,你就可以用Python做很多有趣的事情:

  • 文本处理: 从写诗到写代码,从编辑文档到处理数据,字符串都是你的得力助手。
  • 数据分析: 从读取文件到爬取网页,字符串可以帮你解析和处理各种数据,让你成为数据达人。
  • 游戏开发: 从游戏剧情到角色对话,字符串可以为游戏增添趣味性,让你成为游戏开发者。
相关推荐
㳺三才人子6 小时前
初探 Flask
后端·python·flask·html
星栈独行6 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
Java爱好狂.6 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
陈随易6 小时前
Redis 8.8发布,一定要更新
前端·后端·程序员
装不满的克莱因瓶7 小时前
SpringBoot 如何将 lib 目录中jar包打包进最终的jar包里面
spring boot·后端·maven·jar·mvn
ltl7 小时前
Transformer 原论文实验结果:为什么 28.4 BLEU 足以改写路线图
后端
excel8 小时前
为什么我推荐使用 Termius:现代 SSH 工具的完整体验
前端·后端
卷毛的技术笔记9 小时前
Java后端硬核实战:用Spring AI Alibaba+Redis给LLM装上“超强记忆中枢”
java·人工智能·redis·后端·spring·ai·系统架构
IT_陈寒10 小时前
Java的Optional差点让我掉坑里,这几个坑你别踩
前端·人工智能·后端
子兮曰10 小时前
Harness 驾驭工程深度教程:从 AGENTS.md 到全链路 AI 编码基础设施
前端·后端·ai编程