【Python 字符串】

news2025/5/9 15:02:55

Python 中的字符串(str)是用于处理文本数据的基础类型,具有不可变性、丰富的内置方法和灵活的操作方式。以下是 Python 字符串的核心知识点:


一、基础特性

  1. 定义方式

    s1 = '单引号字符串'
    s2 = "双引号字符串"
    s3 = '''三引号多行
    字符串'''
    s4 = """三引号多行
    字符串"""
    
  2. 不可变性

    s = "hello"
    s[0] = 'H'  # 报错:字符串不可修改
    
  3. 转义字符

    path = 'C:\\Users\\Name\\Documents'  # 反斜杠需转义
    text = "他说:\"Python 很有趣!\""    # 双引号需转义
    

二、常用操作

1. 字符串拼接
name = "Alice"
greeting = "Hello, " + name + "!"  # 拼接 → "Hello, Alice!"
2. 字符串重复
"Hi" * 3  # → "HiHiHi"
3. 成员检查
"a" in "apple"  # → True
4. 索引与切片
s = "Python"
s[0]    # → 'P'(正向索引,从0开始)
s[-1]   # → 'n'(反向索引,从-1开始)
s[1:4]  # → 'yth'(切片,左闭右开)
s[::-1] # → 'nohtyP'(逆序)

三、常用方法

1. 大小写转换
s = "hello World"
s.upper()   # → "HELLO WORLD"
s.lower()   # → "hello world"
s.title()   # → "Hello World"
2. 搜索与统计
s = "apple banana apple"
s.find("apple")  # → 0(首次出现位置)
s.count("apple") # → 2(出现次数)
s.startswith("ap") # → True
3. 替换与分割
s = "a,b,c,d"
s.replace(",", "-")  # → "a-b-c-d"
s.split(",")         # → ["a", "b", "c", "d"]
"-".join(["a", "b"]) # → "a-b"
4. 去除空白
s = "   hello   \n"
s.strip()   # → "hello"(去除首尾空白)
s.lstrip()  # → "hello   \n"(仅左侧)
s.rstrip()  # → "   hello"(仅右侧)

四、字符串格式化

1. f-string(推荐)
name = "Alice"
age = 25
f"姓名:{name},年龄:{age}"  # → "姓名:Alice,年龄:25"
2. str.format()
"{} is {} years old".format(name, age)  # → "Alice is 25 years old"
3. 百分号格式化
"数值:%.2f" % 3.1415  # → "数值:3.14"

五、编码处理

1. 编码转换
s = "你好"
bytes_data = s.encode("utf-8")  # → 字节串 b'\xe4\xbd\xa0\xe5\xa5\xbd'
original = bytes_data.decode("utf-8")  # → "你好"
2. 处理常见错误
# 忽略无法解码的字符
s = b'\xe4\xbd\xa0\xff'.decode("utf-8", errors="ignore")  # → "你"

六、高级技巧

1. 格式化对齐
s = "42"
s.rjust(5, '0')  # → "00042"(右对齐,填充0)
s.center(7, '-') # → "--42---"
2. 模板字符串(安全场景)
from string import Template
tpl = Template("Hello, $name!")
tpl.substitute(name="Bob")  # → "Hello, Bob!"
3. 路径操作(pathlib模块)
from pathlib import Path
path = Path("/user/docs/file.txt")
path.stem   # → "file"
path.suffix # → ".txt"

七、性能优化

  1. 避免频繁拼接

    # 低效方式
    res = ""
    for c in "long string":
        res += c
    
    # 高效方式
    parts = []
    for c in "long string":
        parts.append(c)
    "".join(parts)
    
  2. 预编译正则表达式(如需频繁匹配):

    import re
    pattern = re.compile(r"\d+")
    pattern.findall("a1b22c333")  # → ['1', '22', '333']
    

八、常见陷阱

  1. 索引越界

    s = "abc"
    s[3]  # 报错:IndexError
    
  2. 编码不一致

    # 错误示例:混合编码可能导致乱码
    with open("file.txt", "w", encoding="gbk") as f:
        f.write("你好")  # 需确保读写编码一致
    

通过掌握这些内容,可以高效处理文本数据,从简单的日志解析到复杂的自然语言处理任务。实际应用中需根据场景选择合适的方法,并注意编码和性能问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2371562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CTFer成长之路】举足轻重的信息搜集

举足轻重的信息搜集 信息搜集 常见的搜集 题目描述: 一共3部分flag docker-compose.yml version: 3.2services:web:image: registry.cn-hangzhou.aliyuncs.com/n1book/web-information-backk:latestports:- 80:80启动方式 docker-compose up -d 题目Flag n1book{info_…

Linux开发工具【中】

目录 一、vim 1.1 插入模式 1.2 底行模式 1)set nu 2)set nonu 3) /XXX n 4)!command 5)vs other 1.3 补充 1) 批量化操作 2)批量化替换 : 3)快速定位&am…

MySQL OCP 认证限时免费活动​ 7 月 31 日 前截止!!!

为庆祝 MySQL 数据库发布 30 周年,Oracle 官方推出限时福利:2025 年 4 月 20 日至 7 月 31 日期间,所有人均可免费报考 MySQL OCP(Oracle Certified Professional)认证考试。该认证验证持证者在 MySQL 数据库管理、优化…

学习笔记:数据库——事务

1.内容: 基于现有数据库设计检查点实验,观察比较提交前后执行结果并分析。 2.实现 源码 -- 开启事务 START TRANSACTION;-- 插入一条订单记录(客户ID为10002) INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获…

UE5 Daz头发转Blender曲线再导出ABC成为Groom

先安装Daz to Blender Import插件 【神器】 --DAZ一键导入blender插件的详细安装和使用,自带骨骼绑定和控制器,多姿势动画,Importer桥接插件_哔哩哔哩_bilibili 然后安装DAZHairConverter插件 一分钟将DAZ头发转化成Blender粒子毛发_哔哩哔…

【贪心算法】贪心算法四

贪心算法四 1.最长回文串2.增减字符串匹配3.分发饼干4.最优除法点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.最长回文串 题目链接: 409. 最长回文串 题目分析: 给一个包含大小字母的字符串,从里面挑选出来一些字母构成一个…

【漫话机器学习系列】240.真正类率(True Positive Rate,TPR)

理解真正类率(True Positive Rate,TPR):公式、意义与应用 在机器学习与深度学习模型评估中,"真正类率"(True Positive Rate,简称TPR)是一个非常重要的指标。TPR反映了分类…

Linux的基础开发工具

目录 前言: 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发

前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…

Linux基础(最常用基本命令)

1.查看文件ls 1.1 格式 ls 选项 参数,如:ls -lah ~/ 1.2 选项设置: -l:list 以列表方式显示文件 -h:human-readable 以人类可读的方式显示文件大小(会将纯数字转换为kb,mb) -a:all 显示所有的…

含铜废水循环利用体系

在工业绿色转型浪潮中,含铜废水回收技术正以"资源再生智能管控"的双核驱动模式,重构传统水处理产业的价值链。该体系通过构建"精准分离-梯级利用-智慧运维"的闭环系统,不仅突破了重金属废水处理的技术桎梏,更…

MySQL 安装配置(完整教程)

文章目录 一、MySQL 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1 初始化 MySQL5.2 搭建 MySQL 环境 六、修改 MySQL 密码七、卸载 MySQL八、结语 一、MySQL 简介 MySQL 是一款广泛使用的开源关系型数据库管理系统(RDBMS)&#…

【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升

文章目录 1、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链 2、JC垃圾回收机制♻️3、GC算法3.1 引用计数法3.2 标记清除法 4、闭包4.1 定义4.2 闭包的应用:实现数据的私有 5、变量提升 1、作用域 即一个范围,离开了这个范围,这个变量就不…

【从零开始学习RabbitMQ | 第一篇】从异步通信到交换机

目录 前言 1.什么是RabbitMQ? 2.同步调用的优缺点 3.异步调用的优缺点 3.1优点: 3.2异步调用的问题是什么? 4技术选型 4.1AMQP协议就是: 4.2kafka和RabbitMQ的使用场景 5.安装RabitMq 6.rabitmq的整体架构 7.RabibtM…

AI(学习笔记第二课) 使用langchain进行AI开发

文章目录 AI(学习笔记第二课) 使用langchain进行AI开发学习内容:1. 使用背景2.创建python(pycharm community版)开发环境并连接deepseek2.1 创建python(pycharm community版)开发环境2.2 创建python工程2.3 写入初始py…

基于Jenkins的DevOps工程实践之Jenkins共享库

文章目录 前言Jenkins共享库结构1、共享库演示2、知识点补充3、实践使用共享库格式化输出日志4、groovy基础语法4.1、 什么是 Groovy?4.2、groovy特点4.3、运行方法4.4、标识符4.5、基本数据类型4.5.1、string类型4.5.2、list类型 4.6、函数使用4.7、正则表达式 5、…

使用Qt自带的Qt assistant时如何添加需要查看的文档

当我们双击打开Qt Assistant时 左边目录栏只有自带的帮助文档,所以需要添加要查看的文档 点击左上角Edit中的Preferences,点击add 找到qdoc文件夹 全选里面的内容 点击Apply 点击ok 左边的目录栏就出现所有这个版本的Qt有关的文档啦

基于网络爬虫+Spark+Hadoop等大数据和SpringBoot技术实现的的汽车行业大数据分析与可视化平台系统(源码+论文+PPT+部署文档教程等)

博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…

日本IT|AI应用工程师主要工作内容以及职业前景解析

1. 主要工作内容 AI应用工程师是: 类别具体工作内容常见工具需求分析和业务部门沟通,明确「用AI解决什么问题」PowerPoint, Excel, Miro模型选型与微调用现成AI(如BERT、YOLOv8、Stable Diffusion等)做Fine-TuningPython (PyTor…

Soft Mask(软遮罩)技术

一、概述 Soft Mask是一种技术或工具,主要用于实现平滑的边缘遮罩效果。它在不同的应用领域有不同的实现和定义 1.在Unity UI设计中 SoftMask是一款专为Unity设计的高级遮罩工具,它突破了传统Mask的限制,提供了更为灵活和细腻的UI遮罩解决方案…