Python 字符串(str)全方位剖析:从基础入门、方法详解到跨语言对比与知识拓展

Python 字符串(str)全方位剖析:从基础入门、方法详解到跨语言对比与知识拓展

本文将深入探讨 Python 中字符串(str)的相关知识,涵盖字符串的定义、创建、基本操作、格式化等内容。同时,会将 Python 字符串与其他常见编程语言(如 Java、C++)中的字符串进行比较,帮助读者更好地理解不同语言中字符串处理的异同。此外,会对class str进行详细介绍,并对所有字符串方法进行逐一详解,还会对相关知识点进行扩展深化,提供丰富的示例代码和详细的解释,让读者能够全面掌握 Python 字符串的使用。

文章目录

  • Python 字符串(str)全方位剖析:从基础入门、方法详解到跨语言对比与知识拓展
    • 一、Python 字符串(str)基础
      • 1. 字符串的定义
      • 2. 字符串的创建
      • 3. 字符串的基本操作
        • 索引和切片
        • 拼接和重复
        • 字符串长度
      • 4. 字符串的格式化
        • 旧式的`%`格式化
        • `str.format()`方法
        • f - 字符串(Python 3.6+)
    • 二、`class str` 介绍
    • 三、Python 字符串(str)方法详解
      • 1. 大小写转换方法
        • `upper()`
        • `lower()`
        • `title()`
        • `capitalize()`
        • `swapcase()`
      • 2. 查找和替换方法
        • `find(sub[, start[, end]])`
        • `rfind(sub[, start[, end]])`
        • `index(sub[, start[, end]])`
        • `rindex(sub[, start[, end]])`
        • `replace(old, new[, count])`
      • 3. 去除空白字符方法
        • `strip([chars])`
        • `lstrip([chars])`
        • `rstrip([chars])`
      • 4. 分割和连接方法
        • `split(sep=None, maxsplit=-1)`
        • `rsplit(sep=None, maxsplit=-1)`
        • `splitlines([keepends])`
        • `join(iterable)`
      • 5. 判断方法
        • `startswith(prefix[, start[, end]])`
        • `endswith(suffix[, start[, end]])`
        • `isalpha()`
        • `isdigit()`
        • `isalnum()`
        • `isspace()`
        • `islower()`
        • `isupper()`
        • `istitle()`
      • 6. 填充和对齐方法
        • `ljust(width[, fillchar])`
        • `rjust(width[, fillchar])`
        • `center(width[, fillchar])`
        • `zfill(width)`
    • 四、Python 字符串与其他语言字符串的比较
      • 1. Python 与 Java 字符串比较
      • 2. Python 与 C++ 字符串比较
    • 五、相关知识点扩展深化
      • 1. 字符串的编码与解码
    • 总结
    • TAG:Python、字符串、str、字符串方法、字符串比较、字符串格式化
    • 相关学习资源

一、Python 字符串(str)基础

1. 字符串的定义

在 Python 中,字符串是由一系列字符组成的不可变序列,可以使用单引号(')、双引号(")或三引号('''""")来表示。

# 使用单引号
str1 = 'Hello, World!'
# 使用双引号
str2 = "Python is great"
# 使用三引号(可以跨多行)
str3 = '''This is a
multi - line string'''

2. 字符串的创建

除了直接使用引号创建字符串外,还可以使用str()函数将其他数据类型转换为字符串。

num = 123
str_num = str(num)
print(type(str_num))  # <class 'str'>

3. 字符串的基本操作

索引和切片

字符串中的每个字符都有一个索引,索引从 0 开始。可以使用索引来访问单个字符,也可以使用切片来获取子字符串。

s = "Python"
# 访问单个字符
print(s[0])  # P
# 切片操作
print(s[1:3])  # yt
拼接和重复

可以使用+运算符来拼接字符串,使用*运算符来重复字符串。

str_a = "Hello"
str_b = "World"
# 拼接
print(str_a + " " + str_b)  # Hello World
# 重复
print(str_a * 3)  # HelloHelloHello
字符串长度

可以使用len()函数来获取字符串的长度。

s = "Python"
print(len(s))  # 6

4. 字符串的格式化

Python 提供了多种字符串格式化的方法,如旧式的%格式化、str.format()方法和 f - 字符串。

旧式的%格式化
name = "Alice"
age = 25
print("My name is %s and I'm %d years old." % (name, age))
str.format()方法
name = "Bob"
age = 30
print("My name is {} and I'm {} years old.".format(name, age))
f - 字符串(Python 3.6+)
name = "Charlie"
age = 35
print(f"My name is {name} and I'm {age} years old.")

二、class str 介绍

在 Python 中,str是一个内置类,用于表示字符串对象。所有使用引号创建的字符串都是str类的实例。str类提供了许多有用的方法来处理字符串。当我们创建一个字符串时,实际上是在创建一个str类的对象,并且可以调用该对象的各种方法。

s = "example"
print(type(s))  # <class 'str'>

三、Python 字符串(str)方法详解

1. 大小写转换方法

upper()

将字符串中的所有小写字母转换为大写字母。

s = "hello"
print(s.upper())  # HELLO
lower()

将字符串中的所有大写字母转换为小写字母。

s = "WORLD"
print(s.lower())  # world
title()

将字符串中每个单词的首字母转换为大写,其余字母转换为小写。

s = "hello world"
print(s.title())  # Hello World
capitalize()

将字符串的第一个字符转换为大写,其余字符转换为小写。

s = "hello world"
print(s.capitalize())  # Hello world
swapcase()

将字符串中的大写字母转换为小写字母,小写字母转换为大写字母。

s = "HeLlO"
print(s.swapcase())  # hElLo

2. 查找和替换方法

find(sub[, start[, end]])

返回子字符串sub在字符串中第一次出现的索引,如果未找到则返回 -1。startend参数可选,用于指定查找的起始和结束位置。

s = "hello world"
print(s.find("world"))  # 6
rfind(sub[, start[, end]])

find()方法类似,但从字符串的右侧开始查找。

s = "hello world world"
print(s.rfind("world"))  # 12
index(sub[, start[, end]])

find()方法类似,但如果未找到子字符串会抛出ValueError异常。

s = "hello world"
print(s.index("world"))  # 6
rindex(sub[, start[, end]])

rindex()方法类似,但从字符串的右侧开始查找,未找到会抛出ValueError异常。

s = "hello world world"
print(s.rindex("world"))  # 12
replace(old, new[, count])

将字符串中的所有old子字符串替换为new子字符串。count参数可选,用于指定替换的次数。

s = "hello world"
print(s.replace("world", "python"))  # hello python

3. 去除空白字符方法

strip([chars])

去除字符串首尾的指定字符,默认为去除空白字符(空格、制表符、换行符等)。

s = "  hello  "
print(s.strip())  # hello
lstrip([chars])

去除字符串左侧的指定字符,默认为去除空白字符。

s = "  hello  "
print(s.lstrip())  # hello  
rstrip([chars])

去除字符串右侧的指定字符,默认为去除空白字符。

s = "  hello  "
print(s.rstrip())  #   hello

4. 分割和连接方法

split(sep=None, maxsplit=-1)

根据指定的分隔符sep将字符串分割成一个列表。maxsplit参数可选,用于指定最大分割次数。如果sep未指定,则默认以空白字符作为分隔符。

s = "hello world"
print(s.split())  # ['hello', 'world']
rsplit(sep=None, maxsplit=-1)

split()方法类似,但从字符串的右侧开始分割。

s = "hello world"
print(s.rsplit())  # ['hello', 'world']
splitlines([keepends])

根据换行符将字符串分割成一个列表。keepends参数可选,为True时保留换行符,默认为False

s = "hello\nworld"
print(s.splitlines())  # ['hello', 'world']
join(iterable)

将可迭代对象中的元素用指定的字符串连接起来。

lst = ['hello', 'world']
s = " ".join(lst)
print(s)  # hello world

5. 判断方法

startswith(prefix[, start[, end]])

判断字符串是否以指定的前缀prefix开头。startend参数可选,用于指定判断的起始和结束位置。

s = "hello world"
print(s.startswith("hello"))  # True
endswith(suffix[, start[, end]])

判断字符串是否以指定的后缀suffix结尾。startend参数可选,用于指定判断的起始和结束位置。

s = "hello world"
print(s.endswith("world"))  # True
isalpha()

判断字符串是否只由字母组成。

s = "hello"
print(s.isalpha())  # True
isdigit()

判断字符串是否只由数字组成。

s = "123"
print(s.isdigit())  # True
isalnum()

判断字符串是否只由字母和数字组成。

s = "hello123"
print(s.isalnum())  # True
isspace()

判断字符串是否只由空白字符组成。

s = "   "
print(s.isspace())  # True
islower()

判断字符串中的所有字母是否都是小写。

s = "hello"
print(s.islower())  # True
isupper()

判断字符串中的所有字母是否都是大写。

s = "HELLO"
print(s.isupper())  # True
istitle()

判断字符串是否是标题格式(每个单词的首字母大写)。

s = "Hello World"
print(s.istitle())  # True

6. 填充和对齐方法

ljust(width[, fillchar])

返回一个左对齐的字符串,宽度为width,不足的部分用fillchar填充,默认为空格。

s = "hello"
print(s.ljust(10, '*'))  # hello*****
rjust(width[, fillchar])

返回一个右对齐的字符串,宽度为width,不足的部分用fillchar填充,默认为空格。

s = "hello"
print(s.rjust(10, '*'))  # *****hello
center(width[, fillchar])

返回一个居中对齐的字符串,宽度为width,不足的部分用fillchar填充,默认为空格。

s = "hello"
print(s.center(10, '*'))  # **hello***
zfill(width)

返回一个长度为width的字符串,不足的部分在左侧用 0 填充。

s = "123"
print(s.zfill(5))  # 00123

四、Python 字符串与其他语言字符串的比较

1. Python 与 Java 字符串比较

特性PythonJava
定义方式单引号、双引号、三引号双引号
不可变性字符串是不可变的字符串是不可变的(String类),但有可变的StringBuilderStringBuffer
格式化%格式化、str.format()、f - 字符串String.format()方法
拼接+运算符+运算符,也可使用StringBuilderStringBuffer进行高效拼接

2. Python 与 C++ 字符串比较

特性PythonC++
定义方式单引号、双引号、三引号std::string类,使用双引号
不可变性字符串是不可变的std::string是可变的
格式化%格式化、str.format()、f - 字符串std::stringstreamstd::format(C++20 及以上)
拼接+运算符+运算符

五、相关知识点扩展深化

1. 字符串的编码与解码

在 Python 中,可以使用encode()方法将字符串编码为字节序列,使用decode()方法将字节序列解码为字符串。

s = "你好"
# 编码
bytes_s = s.encode('utf - 8')
# 解码
decoded_s = bytes_s.decode('utf - 8')
print(decoded_s)  # 你好

总结

本文详细介绍了 Python 中字符串(str)的定义、创建、基本操作和格式化方法,深入讲解了class str以及所有字符串方法。同时将 Python 字符串与 Java、C++ 中的字符串进行了比较。Python 字符串具有简洁的定义方式和丰富的操作方法,并且提供了多种字符串格式化的手段。在处理字符串时,需要注意字符串的不可变性,以及根据具体需求选择合适的操作方法。此外,还对字符串的编码与解码等相关知识点进行了扩展深化。

TAG:Python、字符串、str、字符串方法、字符串比较、字符串格式化

相关学习资源

  • Python 官方文档 - 字符串操作:https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str 。Python 官方提供的关于字符串操作的详细文档,包含了所有字符串方法的介绍和示例。
  • Java 官方文档 - String 类:https://docs.oracle.com/javase/8/docs/api/java/lang/String.html 。Java 官方关于String类的文档,介绍了 Java 中字符串的各种方法和使用。
  • C++ 参考手册 - std::string:https://en.cppreference.com/w/cpp/string/basic_string 。C++ 参考手册中关于std::string的详细介绍,包含了std::string的各种操作和方法。
  • Tekin的Python编程秘籍库: Python 实用知识与技巧分享,涵盖基础、爬虫、数据分析等干货 本 Python 专栏聚焦实用知识,深入剖析基础语法、数据结构。分享爬虫、数据分析等热门领域实战技巧,辅以代码示例。无论新手入门还是进阶提升,都能在此收获满满干货,快速掌握 Python 编程精髓。

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

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

相关文章

使用C++实现简单的TCP服务器和客户端

使用C实现简单的TCP服务器和客户端 介绍准备工作1. TCP服务器实现代码结构解释 2. TCP客户端实现代码结构解释 3. 测试1.编译&#xff1a;2.运行 结语 介绍 本文将通过一个简单的例子&#xff0c;介绍如何使用C实现一个基本的TCP服务器和客户端。这个例子展示了如何创建服务器…

Java Web开发实战与项目——Spring Boot与Spring Cloud微服务项目实战

企业级应用中&#xff0c;微服务架构已经成为一种常见的开发模式。Spring Boot与Spring Cloud提供了丰富的工具和组件&#xff0c;帮助开发者快速构建、管理和扩展微服务应用。本文将通过一个实际的微服务项目&#xff0c;展示如何使用Spring Boot与Spring Cloud构建微服务架构…

VMware建立linux虚拟机

本文适用于初学者&#xff0c;帮助初学者学习如何创建虚拟机&#xff0c;了解在创建过程中各个选项的含义。 环境如下&#xff1a; CentOS版本&#xff1a; CentOS 7.9&#xff08;2009&#xff09; 软件&#xff1a; VMware Workstation 17 Pro 17.5.0 build-22583795 1.配…

Linux8-互斥锁、信号量

一、前情回顾 void perror(const char *s);功能&#xff1a;参数&#xff1a; 二、资源竞争 1.多线程访问临界资源时存在资源竞争&#xff08;存在资源竞争、造成数据错乱&#xff09; 临界资源&#xff1a;多个线程可以同时操作的资源空间&#xff08;全局变量、共享内存&a…

LD_PRELOAD 绕过 disable_function 学习

借助这位师傅的文章来学习通过LD_PRELOAD来绕过disable_function的原理 【PHP绕过】LD_PRELOAD bypass disable_functions_phpid绕过-CSDN博客 感谢这位师傅的贡献 介绍 静态链接&#xff1a; &#xff08;1&#xff09;举个情景来帮助理解&#xff1a; 假设你要搬家&#x…

【无人集群系列---无人机集群编队算法】

【无人集群系列---无人机集群编队算法】 一、核心目标二、主流编队控制方法1. 领航-跟随法&#xff08;Leader-Follower&#xff09;2. 虚拟结构法&#xff08;Virtual Structure&#xff09;3. 行为法&#xff08;Behavior-Based&#xff09;4. 人工势场法&#xff08;Artific…

Oracle Fusion Middleware更改weblogic密码

前言 当用户忘记weblogic密码时&#xff0c;且无法登录到web界面中&#xff0c;需要使用服务器命令更改密码 更改方式 1、备份 首先进入 weblogic 安装目录&#xff0c;备份三个文件&#xff1a;boot.properties&#xff0c;DefaultAuthenticatorInit.ldift&#xff0c;Def…

MongoDB 复制(副本集)

MongoDB 复制(副本集) 引言 MongoDB是一个高性能、可扩展、易于使用的文档存储系统。它以JSON-like的文档存储结构&#xff0c;支持灵活的数据模型。在分布式系统中&#xff0c;为了提高数据可用性和系统稳定性&#xff0c;常常需要实现数据的备份和冗余。MongoDB提供了副本集…

【Erdas实验教程】009:非监督分类及分类后评价

文章目录 一、分类过程二、分类评价ERDAS 的 ISODATA 算法是基于最小光谱距离来进行的非监督分类,聚类过程始于任意聚类平均值或一个已有分类模板的平均值;聚类每重复一次,聚类的平均值就更新一次,新聚类的均值再用于下次聚类循环。这个过程不断重复,直到最大的循环次数已…

一周学会Flask3 Python Web开发-Jinja2模板访问对象

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 如果渲染模板传的是对象&#xff0c;如果如何来访问呢&#xff1f; 我们看下下面示例&#xff1a; 定义一个Student类 cla…

git 命令 设置别名

在Git中&#xff0c;您可以通过以下命令查看所有的alias&#xff08;别名&#xff09;&#xff1a; git config --get-regexp alias 这个命令会列出所有配置的alias&#xff0c;例如&#xff1a; alias.st.status alias.co.checkout alias.br.branch ... 如果您想查看某个特定a…

React Router v5 vs v6 路由配置对比

React Router v5 vs v6 路由配置对比 React Router 是 React 中最常用的路由库&#xff0c;从 v5 到 v6 版本&#xff0c;发生了较大变化。本文对比 React Router v5 和 React Router v6 的配置方式&#xff0c;帮助开发者顺利迁移。 1. 安装依赖 React Router v5 npm inst…

机器学习,我们主要学习什么?

机器学习的发展历程 机器学习的发展历程&#xff0c;大致分为以下几个阶段&#xff1a; 1. 起源与早期探索&#xff08;20世纪40年代-60年代&#xff09; 1949年&#xff1a;Hebb提出了基于神经心理学的学习机制&#xff0c;开启了机器学习的先河1950年代&#xff1a;机器学习的…

全面理解-深拷贝与浅拷贝

在 C 中&#xff0c;深拷贝&#xff08;Deep Copy&#xff09; 和 浅拷贝&#xff08;Shallow Copy&#xff09; 是两种完全不同的对象拷贝策略&#xff0c;主要区别在于对指针和动态分配资源的处理方式。正确理解二者的区别是避免内存泄漏、悬空指针和程序崩溃的关键。 一、核…

蓝桥杯第十六届嵌入式模拟编程题解析

由硬件框图可以知道我们要配置LED 和按键 LED 先配置LED的八个引脚为GPIO_OutPut&#xff0c;锁存器PD2也是&#xff0c;然后都设置为起始高电平&#xff0c;生成代码时还要去解决引脚冲突问题 按键 按键配置&#xff0c;由原理图按键所对引脚要GPIO_Input 生成代码&#xf…

在 JavaScript 中,[](空数组)不是假值,它是“真值”(truthy)

文章目录 语法解释!this.form.productPhotos 的含义在代码中的作用具体判断 实际上下文总结当前代码的局限 在你的父组件代码中&#xff0c;出现了 !this.form.productPhotos 这样的表达式&#xff0c;具体是在 handleSubmit 方法中&#xff1a; private handleSubmit() {if (…

【Springboot3】Springboot3 搭建RocketMQ 最简单案例

说来也奇怪&#xff0c;RocketMQ 不能很好的兼容Springboot3&#xff0c;刚开始上手Springboot3集成RocketMQ会发现总是不能实例化RocketMQTemplate&#xff0c;老是启动时报错。本项目采用Springboot3&#xff0c;JDK21 &#xff0c;Maven 3.9&#xff0c;提供一个非常简单的示…

抓包工具 wireshark

1.什么是抓包工具 抓包工具是什么&#xff1f;-CSDN博客 2.wireshark的安装 【抓包工具】win 10 / win 11&#xff1a;WireShark 下载、安装、使用_windows抓包工具-CSDN博客 3.wireshark的基础操作 Wireshark零基础使用教程&#xff08;超详细&#xff09; - 元宇宙-Meta…

w~视觉~合集13

我自己的原文哦~ https://blog.51cto.com/whaosoft/13384038 #xxx w视觉合集13~17没了.... #ViTAR 作者提出了一种新颖的架构&#xff1a;任意分辨率的视觉 Transformer &#xff08;ViTAR&#xff09;。ViTAR中的自适应标记合并功能使模型能够自适应地处理可变分辨率图像…

漏洞文字版表述一句话版本(漏洞危害以及修复建议),通常用于漏洞通报中简洁干练【持续更新中】

漏洞文字版表述一句话版本(漏洞危害以及修复建议) SQL注入漏洞 危害描述&#xff1a; SQL注入漏洞允许攻击者通过构造恶意的SQL语句&#xff0c;绕过应用程序的安全检查&#xff0c;直接访问或操作数据库。这可能导致数据泄露、数据篡改、甚至数据库被删除等严重后果&#xf…