11 python 数据容器-字符串

发布于:2025-03-21 ⋅ 阅读:(32) ⋅ 点赞:(0)

一、什么是数据容器

举个例子,一个办公室里有一群牛马,他们都有自己的名字,如果没有容器的概念,那么我们用变量来存放他们的名字,比如:
name1 = "翠花"
name2 = "玛丽"
name3 = "二狗子"
name4 = "疯子"
name5 = "麻雀花"
...

有几个人就需要几个变量来存储了,那么我们能有能有个好办法,不用那么繁琐呢,反正都是牛马,那我们搞个房间把牛马都放起来,比如这样:

牛马群 = ["翠花", "玛丽", "二狗子", "疯子", "麻雀花"]

只要一个变量就搞定。这种类似的变量就叫数据容器

 python中的数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据成为一个元素,每一个元素,可以是任意的数据,比如字符串、数字、布尔等。

python中常用的数据类型:str(字符串)、list(列表)、tuple(元组)、set(集合)、dict(字典)

二、字符串定义

在 Python 的编程世界里,字符串是处理文本的得力助手,就像办公室里的打印机,能把各种文字信息整理得井井有条。对于刚接触编程的 “办公室牛马” 们来说,掌握字符串的用法,能让日常工作中的文本处理变得高效又轻松。

字符串是字符的容器,一个字符串可以存放任意数量的字符。
比如:helloworld

三、字符串的创建

在办公室写文件时,我们会用各种符号来标记内容,在 Python 里创建字符串也是一样。
用单引号 ' 或双引号 " 把文本包起来,就创建了一个字符串。比如,要记录今天的工作任务:

task1 = '整理销售数据报表'
task2 = "撰写项目进度报告"

如果字符串里本身就有单引号,为了避免混乱,就用双引号来创建,反过来也可以。像这样: 

note = "领导说:'下午开会'"
note = '领导说:"下午开会"'

四、字符串的下标(索引)

字符串里的元素,也就是一个个字符,访问的方式:
从前向后访问,从0开始,索引从 0 开始,第一个字符的索引是 0,第二个是 1,依次类推
从后向前访问,从-1开始,从字符串末尾开始数,最后一个字符的索引是 -1 ,倒数第二个是 -2

通过下表获取特定位置的字符

task = '核对财务数据'
print(task[0])  # 输出:核
print(task[-1])  # 输出:据

要是想查看一段内容,就用切片。切片就像从一长段文字里选中一部分。用方括号 [] ,写成 变量[头下标:尾下标] 的形式,它会截取从 头下标 开始(包含这个字符)到 尾下标 结束(不包含这个字符)的内容。例如: 

text = '会议在下午3点举行'
print(text[3:6])  # 输出:下午3

五、切片(可用于字符串、列表、元组)

1、序列

在将切片之前,我们先来了解一下什么叫序列
序列就是指:内容连续、有序,可以使用下标索引的一类数据容器,字符串、列表、元组都属于序列

2、序列的常用操作:切片

切片就是从一个序列中取出子序列。因为这里讲的是字符串,会用字符串做例子,后续的列表、元组也是同样的操作。
语法:容器[头下标:尾下标:步长]

头下标:表示从何处开始,可以留空,留空视作从头开始

尾下标(不含):表示何处结束,可以留空,留空视作截取到结尾

步长表示,依次取元素的间隔
步长1表示,一个个取元素
步长2表示,每次跳过1个元素取
步长N表示,每次跳过N-1个元素取
步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

2.1 正向切片

假如你在办公室收到一封邮件,主题是 email_subject = "重要项目进度汇报会议通知" ,现在你只想获取 “项目进度汇报” 这部分内容,就可以用正向切片来实现: 

email_subject = "重要项目进度汇报会议通知"
project_report = email_subject[2:8]
print(project_report) 

在这个例子中,email_subject 是字符串变量,2 是头下标,8 是尾下标。从索引 2 的字符 “项” 开始,到索引 8 之前的字符 “报” 结束,成功截取到了想要的内容。

2.2 反向切片 

还是这个邮件主题,如果你想获取 “会议通知” 这部分内容,用反向切片更方便:

email_subject = "重要项目进度汇报会议通知"
meeting_notice = email_subject[-4:]
print(meeting_notice) 
# 会议通知

这里 [-4:] 表示从倒数第 4 个字符 “会” 开始,一直到字符串末尾,这样就获取到了 “会议通知”。如果想获取从倒数第 6 个字符到倒数第 3 个字符的内容(不包含倒数第 3 个字符),可以这样写:

email_subject = "重要项目进度汇报会议通知"
partial_content = email_subject[-6:-3]
print(partial_content) 
# 汇报会

2.3 切片步长

 办公室里有个同事的工号 employee_id = "A1B2C3D4" ,你想每隔一个字符取一个,得到 ABCD,可以这样做:

employee_id = "A1B2C3D4"
extracted_id = employee_id[::2]
print(extracted_id) 
# ABCD

 如果想反向每隔一个字符取一个,得到 4321,可以这样:

employee_id = "A1B2C3D4"
reversed_extracted_id = employee_id[-1::-2]
print(reversed_extracted_id) 
# 4D2B

2.4 切片的实际应用

 在整理客户名单时,客户姓名都存放在字符串里,格式是 last_name + first_name ,现在要把姓和名分开。假设客户姓名是 customer_name = "张 三" 

customer_name = "张 三"
last_name = customer_name[:1]
first_name = customer_name[2:]
print(f"姓:{last_name},名:{first_name}") 
# 姓:张,名:三

 五、更新字符串

虽然字符串一旦创建就不能直接修改,但我们可以通过 “拼接” 的方式达到类似更新的效果。比如,原本任务是 “写报告”,现在要改成 “写详细报告”: 

old_task = '写报告'
new_task = old_task[:1] + '详细' + old_task[1:]
print(new_task)  # 输出:写详细报告

六、转义字符

在办公室聊天时,有些特殊符号有特别的意思。在字符串里也一样,当我们想用一些特殊字符时,就要用反斜杠 \ 来 “转义”。

  • \n 是换行符,让文字换行。就像在文档里按了回车键:
    message = "第一行\n第二行"
    print(message)
    # 第一行
    # 第二行
  • \t 是制表符,用来对齐内容,跟按 Tab 键效果差不多
    print("姓名\t年龄\n小明\t25")
    # 姓名	年龄
    # 小明	25
  • \\ 表示一个反斜杠,\' 和 \" 分别表示单引号和双引号。比如:
    print('他说:\'今天加班\'')
    # 他说:'今天加班'

七、字符串运算符 

Python 给字符串准备了几个很有用的运算符:

连接运算符 +

可以把两个字符串连在一起,就像把两张纸粘起来。例如:

greeting = "你好," + "同事"
print(greeting)  # 输出:你好,同事

重复运算符 *

能重复输出字符串。要是想表达很生气,就可以用这个:

print("烦死了!" * 3)
# 烦死了!烦死了!烦死了!

成员运算符 in 和 not in

用来检查某个字符或一小段字符串在不在另一个字符串里。比如,看看任务里有没有 “紧急” 这个词:

task = "完成紧急项目"
print("紧急" in task)  # 输出:True
print("重要" not in task)  # 输出:True

八、字符串格式化

在写邮件或者报告时,经常要把一些信息填到固定的格式里。在 Python 里,字符串格式化就能搞定这个。

格式化符号

用 % 来格式化,这是比较传统的方法。比如,要在邮件里写自己的信息:

name = "小李"
age = 28
print("我叫%s,今年%d岁,负责%s工作。" % (name, age, "市场推广"))
# 我叫小李,今年28岁,负责市场推广工作。

常见的格式化符号有:

  • %s:用来格式化字符串。
  • %d:格式化整数。
  • %f:格式化小数。

str.format() 方法

从 Python2.6 开始有的新方法,更灵活好用。还是上面的例子:

name = "小李"
age = 28
print("我叫{}, 今年{}岁,负责{}工作。".format(name, age, "市场推广"))
# 我叫小李,今年28岁,负责市场推广工作。

还能指定顺序和用关键字: 

print("{0}喜欢{1},{1}很有趣!".format("小王", "编程"))
print("{name}喜欢{hobby},{hobby}很有趣!".format(name="小张", hobby="画画"))
# 小王喜欢编程,编程很有趣!
# 小张喜欢画画,画画很有趣!

f-string方法:

Python3.6 之后出现的,以 f 开头,大括号 {} 里放变量或表达式,会自动计算并替换。例如:

project = "机器人研发"
print(f"正在进行{project}项目")
# 正在进行机器人研发项目

在 Python3.8 里,还能用 = 显示表达式和结果: 

x = 5
print(f"{x + 2 = }")  # 输出:x + 2 = 7

九、三引号

 有时候写报告,内容很多,要跨好几行。

在 Python 里,三引号(''' 或 """)就能搞定这种情况。它可以让字符串跨多行,里面还能有换行符、制表符这些特殊字符。比如写个会议纪要:

meeting_minutes = """会议主题:项目进度汇报
会议时间:下午2点
参会人员:各部门负责人

会议内容:
1. 各部门汇报项目进展。
2. 讨论遇到的问题及解决方案。
"""
print(meeting_minutes)

如前面介绍过的,三引号也用在注释和函数文档说明里 

十、字符串内建函数

Python 给字符串准备了好多 “小工具”,也就是内建函数,能帮我们处理各种文本问题。

查找与统计

  • count():统计某个子字符串出现的次数。
    比如统计报告里 “问题” 出现了几次:

    report = "项目中存在一些问题,问题还需进一步探讨"
    print(report.count("问题"))  # 输出:2
  • find() 和 rfind():找子字符串第一次出现的位置,find() 从左往右找,rfind() 从右往左找,找不到就返回 -1 。

  • index() 和 rindex():和上面两个类似,但找不到时会报错。

判断相关

  • isalnum():检查字符串是不是由字母和数字组成。比如检查员工编号:

    id_number = "A12345"
    print(id_number.isalnum())  # 输出:True
  • isalpha():判断是不是全是字母或中文字。

  • isdigit():看是不是只有数字。

  • 还有 islower()isupper()isspace() 等,分别用来判断大小写、是不是空白字符。

转换操作:

  • upper() 和 lower():把字符串里的字母变成大写或小写。比如把邮件标题全部大写

    title = "hello, guy"
    print(title.upper())  # 输出:HELLO, GUY
  • title():把字符串变成标题格式,每个单词首字母大写。

  • swapcase():大小写互换。

其他常用函数: 

  • len():返回字符串的长度,就像数文档有多少字:

    text = "今天的工作完成了"
    print(len(text))  # 输出:8
  • strip()lstrip() 和 rstrip():分别用来去掉字符串两边、左边、右边的空格或指定字符。

  • replace():替换字符串里的内容。比如把 “完成” 换成 “搞定”:

    task = "完成任务"
    new_task = task.replace("完成", "搞定")
    print(new_task)  # 输出:搞定任务
  • split():用指定的字符把字符串切开,变成一个列表。比如按逗号拆分任务列表:

    tasks = "任务1,任务2,任务3"
    task_list = tasks.split(",")
    print(task_list)  # 输出:['任务1', '任务2', '任务3']