python记录之字符串

在Python中,字符串是一种非常常见且重要的数据类型,用于存储文本信息。下面,我们将对Python字符串进行深入的讲解,包括其基本操作、常见方法、格式化以及高级特性。

1. 字符串的创建

在Python中,字符串可以通过单引号、双引号或三引号(单三引号或双三引号)来创建。

# 使用单引号创建字符串
s1 = 'Hello, World!'# 使用双引号创建字符串(和单引号一样)
s2 = "Hello, World!"# 使用三引号创建多行字符串
s3 = """
This is a multiline string.
It can span multiple lines.
"""

2. 字符串的基本操作

2.1 索引和切片

字符串中的字符可以通过索引来访问,索引从0开始。切片操作可以获取字符串的子串。

s = 'Hello, World!'
print(s[0])  # 输出 'H'
print(s[4:10])  # 输出 'o, Wor'

2.2 字符串连接和重复

使用加号+可以连接两个字符串,使用乘号*可以重复字符串。

s1 = 'Hello'
s2 = 'World'
s3 = s1 + ' ' + s2  # 连接字符串
print(s3)  # 输出 'Hello World's4 = 'Hi' * 3  # 重复字符串
print(s4)  # 输出 'HiHiHi'

2.3 成员判断

使用in关键字可以判断一个字符或子串是否存在于字符串中。

s = 'Hello, World!'
print('o' in s)  # 输出 True
print('Python' in s)  # 输出 False

3. 字符串的常用方法

Python字符串提供了大量的内置方法,用于处理和分析字符串。

3.1 查找和替换

  • find(substr, start=0, end=len(string)):查找子串,返回索引或-1。
  • replace(old, new[, count]):替换子串。
s = 'Hello, World!'
print(s.find('World'))  # 输出 7
print(s.replace('World', 'Python'))  # 输出 'Hello, Python!'

3.2 分割和连接

  • split([sep[, maxsplit]]):根据分隔符分割字符串。
  • join(iterable):使用指定的字符串将序列中的元素连接成一个新的字符串。
s = 'apple,banana,cherry'
print(s.split(','))  # 输出 ['apple', 'banana', 'cherry']
print(' '.join(['Hello', 'World']))  # 输出 'Hello World'

3.3 大小写转换

  • lower():将字符串转换为小写。
  • upper():将字符串转换为大写。
  • capitalize():将字符串的首字母转换为大写。
  • title():将字符串的每个单词的首字母转换为大写。
s = 'Hello World'
print(s.lower())  # 输出 'hello world'
print(s.upper())  # 输出 'HELLO WORLD'
print(s.capitalize())  # 输出 'Hello world'
print(s.title())  # 输出 'Hello World'

3.4 去除空白字符

  • strip([chars]):去除字符串开头和结尾的空白字符(或其他指定字符)。
  • lstrip([chars]):去除字符串开头的空白字符(或其他指定字符)。
  • rstrip([chars]):去除字符串结尾的空白字符(或其他指定字符)。
s = '   Hello World   '
print(s.strip())  # 输出 'Hello World'

4. 字符串格式化

Python提供了多种字符串格式化的方式,包括老式的%格式化、str.format()方法和f-string(Python 3.6+)。

4.1 %格式化

name = 'Alice'
age = 30
print('My name is %s and I am %d years old.' % (name, age))

4.2 str.format()方法

name = "Alice"  
age = 30  
formatted_string = "My name is {} and I am {} years old.".format(name, age)  
print(formatted_string)  # 输出: My name is Alice and I am 30 years old.

4.3 f-string(格式化字符串字面量)

f-string 是 Python 3.6 之后引入的一种新的字符串格式化方法,它允许你在字符串中嵌入表达式,这些表达式在运行时会被计算并转换为字符串。

name = 'Alice'
age = 30
print(f'My name is {name} and I am {age} years old.')

5. 字符串编码

在 Python 中,字符串默认是以 Unicode 编码的。Unicode 是一种字符集,它为世界上几乎所有的字符都分配了一个唯一的编号(称为码点或 Unicode 码位)。当你处理外部数据时,可能会遇到不同的编码方式,如 UTF-8、GBK、ASCII 等。Python 提供了 encode()decode() 方法来处理字符串的编码和解码。

# 编码为 UTF-8
utf8_encoded = 'Hello, World!'.encode('utf-8')# 解码 UTF-8 编码的字节串
decoded_string = utf8_encoded.decode('utf-8')
print(decoded_string)  # 输出 'Hello, World!'

6. 字符串的高级特性

6.1 字符串是不可变的

Python 中的字符串是不可变的,这意味着一旦创建了一个字符串,你就不能更改它的内容。但是,你可以通过拼接、切片等方式创建新的字符串。

6.2 字符串的原地操作

虽然字符串本身是不可变的,但 Python 的某些操作(如 join()replace() 等)会返回新的字符串,而不是修改原始字符串。这些操作是原地(in-place)的,因为它们不会修改任何已存在的对象。

6.3 字符串与字节串的转换

在处理文件、网络数据等时,你经常会遇到字节串(bytes)而不是字符串。Python 提供了 encode()decode() 方法来在字符串和字节串之间进行转换。

6.4 字符串模板

除了上述的格式化方法外,Python 还提供了 string.Template 类来创建简单的字符串模板。这在你需要多次插入相同的数据到字符串的不同位置时非常有用。

from string import Templates = Template('Hello, $name! You are $age years old.')
print(s.substitute(name='Alice', age=30))  # 输出 'Hello, Alice! You are 30 years old.'

7. 总结

Python 的字符串功能强大且易于使用。通过掌握字符串的基本操作、常用方法、格式化方式以及高级特性,你可以更有效地处理和分析文本数据。无论是进行简单的文本处理,还是构建复杂的文本分析系统,Python 的字符串功能都能为你提供强大的支持。

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

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

相关文章

编译原理-语法分析(实验 C语言)

语法分析 1. 实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析 2. 实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析 2.1 待分析的简单语言的语法 用扩充的BNF表示如下: …

牛客NC32 求平方根【简单 二分 Java/Go/C++】

题目 题目链接: https://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c 思路 Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** para…

【python报错】TypeError: ‘dict_values‘ Object IsNot Subscriptable

【Python报错】TypeError: ‘dict_values’ object is not subscriptable 在Python中,字典(dict)提供了几种不同的视图对象,包括dict_keys、dict_values和dict_items。这些视图对象允许你以只读方式遍历字典的键、值或键值对。如果…

vue 创建一个新项目 以及 手动配置选项

【Vue】3.0 项目创建 自定义配置_vue3.0-CSDN博客

GPT-4o仅排第二!北大港大等6所高校联手,发布权威多模态大模型榜单!

多模态大模型视频分析能力榜单出炉: Gemini 1.5 Pro最强,GPT-4o仅排第二? 曾经红极一时的GPT-4V屈居第三。 3.5研究测试:hujiaoai.cn 4研究测试:askmanyai.cn Claude-3研究测试:hiclaude3.com 最近&#…

WordPress网站更换域名后如何重新激活elementor

在创建WordPress网站时,我们常常需要更改域名。但是,在更换域名后,你可能会遇到一个问题:WordPress后台中的Elementor插件授权状态会显示为不匹配。这时,就需要重新激活Elementor插件的授权。下面我会详细说明如何操作…

MySQL8 全文索引

文章目录 创建索引使用索引总结 创建索引 之前未尝试过使用MySQL8的全文索引,今天试一试看看什么效果,否则跟不上时代了都。   创建索引非常简单,写句SQL就行。 create table goods(id integer primary key auto_increment,name varchar(2…

编译原理-词法分析(实验 C语言)

编译原理-词法分析 1. 实验目的 设计、编写并调试一个词法分析程序,加深对词法分析原理的理解 2. 实验要求 2.1 待分析的简单语言的词法 关键字:begin,if,then,while,do,end 所有关键字都是…

前端如何封装自己的npm包并且发布到npm注册源

前言 在前端开发中,复用代码是一种常见且高效的实践。通过封装和发布自己的npm包,你可以轻松地在多个项目之间共享代码,并且贡献给社区。以下是一步一步指导你如何封装自己的npm包并发布到npm注册源。 步骤一:创建并设置项目 首…

智驾”IT运维,探索企业高效管理新航道——运维智慧驾驶舱

在信息化高速发展的今天,企业对于稳定、高效的IT运维管理需求日益迫切。运维智慧驾驶舱,作为新一代的运维解决方案,正以其独特的优势,引领着企业IT运维的新方向。当它与优秀的监控系统相结合时,比如监控易,…

28-unittest批量执行(discover)

unittest框架提供了创建测试用例、测试套件以及批量执行的解决方案。 利用单元测试框架创建测试类,可以把每个测试方法看成是一个最小的单元, 由测试容器组装打包起来,然后可以统一执行,最后输出测试报告。 一、UnitTest核心要素…

最新区块链论文速读--CCF A会议 CCS 2023 共25篇 附pdf下载(3/4)

Conference:ACM Conference on Computer and Communications Security (CCS) CCF level:CCF A Categories:network and information security Year:2023 Num:25 第1~7篇区块链文章请点击此处查看 第8~13篇区块链文…

【2024】Kafka Streams详细介绍与具体使用(1)

目录 介绍关键特性应用场景核心概念部署方式kafka streams的处理模式 具体使用1、准备工作2、添加依赖3、代码实现3、测试 介绍 Kafka Streams是构建在Apache Kafka之上的客户端库,用于构建高效、实时的流处理应用。它允许你以高吞吐量和低延迟的方式处理记录流&am…

TypeScript算法每日一题:赎金信(383)

作者:前端小王hs 阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主 题库:力扣 题目序号:383(简单) 题目:赎金信 给你两个字符串ransomNote 和 magazine,判断ran…

前端工程化工具系列(十三)—— Rollup(v4.18.0):专注于库构建的 JavaScript 打包器

1 安装 1.1 针对 JavaScript pnpm add -D rollup rollup/plugin-node-resolve rollup/plugin-commonjs rollup/plugin-babel rollup-plugin-postcss rollup/plugin-terser1.2 针对 TypeScript 在 JavaScript 基础上添加一些插件: pnpm add -D rollup-plugin-typ…

Mybatis06-动态SQL

动态SQL 1.什么是动态SQL 什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 类似JSTL标签 官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接…

乡村振兴的乡村旅游品质提升:提升乡村旅游服务质量,打造乡村旅游品牌,增强乡村旅游吸引力,打造具有旅游特色的美丽乡村

目录 一、引言 二、提升乡村旅游服务质量 1、完善基础设施建设 2、提升服务人员素质 3、规范服务流程 三、打造乡村旅游品牌 1、挖掘乡村文化特色 2、打造特色旅游产品 3、加强品牌宣传和推广 四、增强乡村旅游吸引力 1、创新旅游体验方式 2、打造旅游精品线路 3、…

【进阶篇-Day2:JAVA包、抽象类、接口、多态】

目录 1、包2、抽象类2.1 抽象类的定义2.2 抽象类的注意事项2.3 abstract关键字的冲突 3、接口3.1 接口的介绍3.2 接口中的成员特点3.2.1 接口中的成员特点3.2.2 类和接口之间的各种关系 3.3 抽象类和接口的对比 4、多态4.1 多态的介绍4.2 多态的前提4.3 多态的成员访问特点4.4 …

vuInhub靶场实战系列--Kioptrix Level #1

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶机信息1.2 靶场配置 二、信息收集2.1 主机发现2.2 端口扫描2.2.1 masscan2.2.2 nmap 2.3 指纹识别2.4 目录扫描2.4.1 dirb…

华为云服务器-云容器引擎 CCE环境构建及项目部署

1、切换地区 2、搜索云容器引擎 CCE 3、购买集群 4、创建容器节点 通过漫长的等待(五分钟左右),由创建中变为运行中,则表明容器已经搭建成功 购买成功后,返回容器控制台界面 5、节点容器管理 6、创建redis工作负载 7、创建mysql工作负载 8、…