python 字符串的详细处理方法


当前版本:

  • Python 3.8.4

简介

    字符串是由字符组成的序列,可以用单引号、双引号或三引号(单引号或双引号的连续使用)括起来。一般用来表示和处理文本信息,可以是字母、数字、标点符号以及其他特殊字符,用于表示单个字符、单词、句子、段落或其他文本数据。

    本篇文章围绕3个部分详细介绍:如何定义字符串(基础)、字符串的处理方式、字符串的转换。

        

文章目录如下

1. 定义字符串

1.1. 基础定义方式

1.2. 定义转义符

1.3. 格式化字符串

2. 字符串处理

2.1. 索引查找

2.2. 拼接字符

2.3. 处理空格

2.4. 删除字符

2.4. 统计字符

2.5. 判断字符

2.6. 分割字符

3. 字符串转换

3.1. 将对象转换为字符串

3.2. 将字母转换为大写

3.3. 将字母转换为小写

3.4. 字母大小写互换


        

1. 定义字符串

字符串一般通过引号来定义,但定义的内容却是有多种方法,这里列举3种常见方式:

1.1. 基础定义方式

使用引号来定义字符串,可以是单引号、双引号或三引号。

  • 单引号和双引号只能定义 "单行" 字符串。
  • 三引号可以定义 "单行" 或 "多行" 字符串。

举个例子,定义一个变量

  • 变量是一个存储值的容器,Python程序中的任何数据都可以存储在变量中。
v1 = 'ABC'        # 单引号定义字符串
v2 = "ABC"        # 双引号定义字符串
v3 = '''ABC'''    # 三引号定义字符串
v4 = """ABC"""    # 三引号定义字符串

这几种定义的方式并没有区别,所包含的字符类型完全一致。

        

单引号和双引号只能定义单行字符串,可以使用三引号来定义多行字符串:

v1="""
string1
string2
"""

三引号本身会保留换行和缩进

v1="""string1string2
"""

        

当然了,除了直接使用引号定义字符外,有时候可能需要让字符中也出现引号,这里列举几种方法

v1 = '姓名: "小李"'     # 单引号中可以包含双引号
v2 = "姓名: '小李'"     # 双引号中可以包含单引号
v3 = "姓名: \"小李\""   # 双引号中包含双引号需要使用转义符 \
v4 = '姓名: \'小李\''   # 单引号中包含单引号需要使用转义符 \

        

注意:如果在定义变量的过程中使用引号,则会被识别为字符串(str)。所以在定义数字时不能使用引号

v1 = 10
v2 = '10'

        

1.2. 定义转义符

转义符是一种特殊字符序列,用于在字符串或字符中表示一些特殊的字符或符号,这些字符或符号在正常情况下可能具有特殊的含义或功能。

在python中可以直接给变量赋值转义符,例如:

v1 = "AAA \n BBB"    # \n表示换行
v2 = "AAA \t BBB"    # \t表示缩进

        

如果希望使用原字符 \,有2种方式可以解决

【方式一】在 \ 前面加一个 \

v1 = "AAA \\n BBB"
v2 = "AAA \\t BBB"

         

【方式二】在定义字符串前面加 rR

v1 = r"AAA \n BBB"
v2 = R"AAA \t BBB"

        

转义字符的各种类型如下:

\n:换行,在输出时将当前位置移到下一行开头
\r:回车,在输出时将当前位置移到本行开头
\t:水平制表符,在输出时在当前位置插入制表符
\v:垂直制表符,在输出时在当前位置插入制表符
\f:换页,将当前位置移到下页开头
\b:退格,将当前位置移到前一列
\a:响铃\N{name}:Unicode数据库中的字符名称,其中name是字符的名字(注意:名称是大小写敏感的)
\uxxxx:表示4位16进制值的Unicode字符(例如,‘\u0026’ 表示 ‘&’)
\Uxxxxxxxx:表示8位16进制值的Unicode字符(例如,‘\U0001F602’ 表示笑脸表情)
\ooo:表示八进制值的字符(例如,‘\041’ 表示 ‘!’)
\xhh:表示十六进制值的字符(例如,‘\x21’ 表示 ‘!’)

        

1.3. 格式化字符串

在定义变量时还可以直接格式化字符串,方式如下:

【方式一】使用 格式化

v1 = 'AAA'
v2 = '%s' %(v1)    # 通过格式化将v1的值给v2

 案例如下:

v1 = "ABC"
v2 = 20# 引用字符使用 "%字符"
var = "v1为: %s, v2为: %d" %(v1, v2)

格式化的类型如下: 

%s:字符串占位符
%d:整数占位符
%f:浮点数占位符
%x:十六进制占位符
%o:八进制占位符
%r:原始数据占位符
%c:字符占位符,用于格式化单个字符类型的数据。

        

【方式二】使用 .format 格式化

v1 = 'AAA'
v2 = '{}'.format(v1)    # 通过格式化将v1的值传递给v2

案例如下: 

v1 = "ABC"
v2 = 20# 引用字符使用 "{}"
var = "v1为: {}, v2为: {}".format(v1, v2)

        

2. 字符串处理

处理字符串是我们日常中使用最多的方法,这里介绍如何使用索引查找字符、如何拼接字符、如何处理空格、如何删除字符、如何统计字符、如何判断字符是否存在和如何去分割字符。

2.1. 索引查找

索引是用于访问序列(字符串、列表、元组等)中元素的方式。在序列中,每个元素都被分配了一个索引值,通过使用索引值,可以定位和访问序列中的特定元素。

字符:A B C 1 2 3
索引:0 1 2 3 4 5  # 索引从0开始

比如定义一个变量,读取第1个字符,那么索引值就是0

v = 'ABC'
print(v[0])

        

使用索引的方式就是在变量后面加方括号,在方括号中指定下标。python就是通过下标去寻找字符,语法如下:

变量名[开始索引 : 结束索引 : 步长]

【案例一】获取单个字符

v = 'abcdefghijkl'
v[0]    # 指定第1个字符
v[3]    # 指定第4个字符
v[-1]   # 指定最后一个字符

        

【案例二】使用切片的方式获取多个字符

v = 'abcdefghijkl'
v[:3]   # 指定前3个字符
v[-3:]  # 指定后3个字符
v[1:4]  # 指定索引1~3的字符(包含起始索引,不包含结束索引)

        

【案例三】切片之后指定索引的步长,默认为1

v = 'abcdefghijkl'
v[:6:1]   # 指定前6个字符,步长为1

指定步长为2(中间跳过1个字符)

v = 'abcdefghijkl'
v[:6:2]   # 指定前6个字符,步长为2

直接指定全部字符,步长为3

v = 'abcdefghijkl'
v[::3]   # 指定全部字符,步长为3

  • 切片时,开始索引为空(默认0),结束所以为空(默认-1),步长为空(默认1)

        

2.2. 拼接字符

  • 这里主要介绍多个变量或字符之间的拼接

【方式一】通过符号拼接 ++=*

两个变量相加

v1 = 'AAA'
v2 = 'BBB'
v3 = v1 + v2  # 将v1和v2的值全部赋给v3

        

将某个变量的值追加到另一个变量后面

v1 = 'AAA'
v2 = 'BBB'
v2 += v1  # 在v2后面增加v1的值

        

使用 * 实现多个字符拼接

v1 = 'A' * 10
v2 = 'ABC' * 3

         

变量也可以直接拼接字符串

v1 = 'AAA'
v2 = v1 + '123'  # 将v1和指定字符赋给v2

        

【方式二】通过格式化拼接

v1 = 'AAA'
v2 = 'BBB'
v3 = f'{v1} {v2}'  # 使用 f'{变量名}' 拼接
v4 = '{} {}'.format(v1, v2)  # 使用 .format 拼接
v5 = '%s %s' %(v1, v2)  # 使用 % 格式化拼接

        

2.3. 处理空格

【方式一】去除首尾空白字符 strip

v = "  AAA BBB  CCC   "
v.strip()

        

【方式二】去除左侧空白字符 lstrip

v = "  AAA BBB  CCC   "
v.lstrip()

        

【方式三】去除右侧空白字符 rstrip

v = "  AAA BBB  CCC   "
v.rstrip()

        

【方式四】去除全部空格 replace

v = "AAA BBB   CCC "
v.replace(" ", "")

        

【方式五】将空格去重 "".join(变量.split())

v = "AAA BBB   CCC "
" ".join(v.split())

        

2.4. 删除字符

  • 删除字符可以通过将某个字符替换为空、或者删除开头/结尾字符,也可以使用索引删除。

【方式一】删除指定字符 replace

v = "AAA BBB CCC"
v = v.replace("BB", "")  # 将BB替换为空

将 BB 替换为空 

 将 B 替换为空

将空格替换为空

将 B 替换为 E

        

【方式二】删除开头字符 lstrip

v = 'abcd acdb abde'
v.lstrip('ab')    # 删除a或b开头的字符

        

【方式三】删除结尾字符 rstrip

v = 'aabc uubc'
v.rstrip('bc')    # 删除b或c结尾的字符

        

【方式四】利用切片删除字符

v = 'abcdefghijkl'
v = v[3:]  # 取第3个字符以后的全部字符,重新赋值

        

2.4. 统计字符

  • 这里主要介绍统计字符总长度、单个字符次数和指定字符的索引位置。

【方式一】查看字符的总长度 len

v = "AAA BBB CCC"
len(v)    # 统计变量v的长度

        

【方式二】查看某个字符的次数 count

v = "AAA BBB CCC"
v.count("B")    # 统计B的次数

        

【方式三】从左往右查找该字符的索引 find index

v = "AAA BBB CCC"
v.index("A")    # 从左往右查看A所在的索引号,如果A不存在则报错
v.find("A")     # 从左往右查看A所在的索引号,如果A不存在则返回-1

查找不存在的字符

  • 从右往左查找使用 rfind 

        

2.5. 判断字符

  • 这里主要介绍对某个变量中的字符进行判断,判断成功返回True、失败返回False。

【方式一】判断字符以A开头 startswith(区分大小写)

v = "AAA BBB CCC"
v.startswith('A')    # 指定判断以什么开头(返回 True、False)

        

【方式二】判断字符以C结尾 endswith(区分大小写)

v = "AAA BBB CCC"
v.endswith('C')    # 指定判断以什么结尾(返回 True、False)

        

【方式三】判断字符包含A in(区分大小写)

v = "AAA BBB CCC"
print("True" if "A" in v else "False")

        

【方式四】判断全是数字 isdigit

v = "12345"
v.isdigit()

        

【方式五】判断全是字母 isalpha

v = "abc"
v.isalpha()

        

【方式六】判断全是大写字母 isupper

v = "AAA"
v.isupper()

        

【方式七】判断全是小写字母 islower

v = "aaa"
v.islower()

        

【方式八】判断包含字母或数字 isalnum

v = "AAA123"
v.isalnum()

        

2.6. 分割字符

python可以通过 split 将字符串分割成多个元素,并以列表的形式返回

v = 'AAA BBB CCC'
v.split(' ')  # 指定分隔符为空格

        

也可以通过 join 将列表按指定分隔符合并成字符串

v = ['AAA', 'BBB', 'CCC']
'-'.join(v)  # 指定分隔符为-

        

3. 字符串转换

这里介绍几种转换字母大小写的方式。

3.1. 将对象转换为字符串

使用 str() 函数将其他对象转换为字符串。str() 可以接受任何对象作为参数,它会返回相应的字符串表示。

v1 = 10           # 定义整数
v2 = ['AAA']      # 定义列表
v3 = {'avg': 20}  # 定义字典
v4 = ('AAA')      # 定义元组

将整数转换为字符串

将列表转换为字符串

将字典转换为字符串

将元组转换为字符串

        

3.2. 将字母转换为大写

【方式一】将全部字母转换为大写 upper

v = 'AbcD eFg'
v.upper()    # 将变量v转换为大写字母

        

【方式二】将首字母转换为大写,其他小写 capitalize

v = 'AbcD eFg'
v.capitalize()    # 将首字母转换为大写,其他小写

        

【方式三】将每个单词首字母转换为大写,其他小写 title

v = 'AbcD eFg'
v.title()    # 将每个单词首字母转换为大写,其他小写

        

3.3. 将字母转换为小写

【方式一】将所有字母转换为小写 lower

v = 'AbcD eFg'
v.lower()    # 将所有字母转换为小写

        

【方式二】将首字母转换为小写(拼接)

v = 'AbcD eFg'
v = v[0].lower() + v[1:]    # 将首字母转换为小写

        

3.4. 字母大小写互换

使用 swapcase 将字母大小写互换

v = 'AAa BBb'
v.swapcase()    # 将首字母转换为小写

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

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

相关文章

CAN/CANFD数据记录仪汽车电子售后神器

CAN数据记录仪是一种用于采集和存储CAN总线数据的工具,广泛应用于汽车、轨道车辆、工业控制等大数据量且不易排查故障的系统中。它可以实时存储总线上的数据,方便后续的研究和分析。解决工程师售后难点。 在选择CAN数据记录仪时,需要根据实…

JavaScript基础05

1 - 作用域 1.1 作用域概述 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。 Ja…

结构化数据,非结构化数据,半结构化数据(AI问答)

结构化数据,非结构化数据,半结构化数据,请介绍一下 结构化数据、非结构化数据和半结构化数据是按照数据组织形式和复杂度进行区分的三大类型: 结构化数据: 结构化数据是指具有固定格式和预定义模式的数据,…

春节回家前,请一定给你的电脑装上KKView远程控制软件

马上春节了,电脑不能带回家,有时候要处理点意外的事情,怎么办?只要走之前,给你电脑装上KKView远程控制软件,就可以随时随地用手机或电脑控制你的工作电脑,远程办公、传文件、看摄像头都没问题。…

Spring全局异常处理

目录 概述依赖导入创建全局异常处理总结 概述 在Spring框架中,全局异常处理主要是通过ControllerAdvice(或其特化形式RestControllerAdvice)注解和ExceptionHandler注解来实现的。这种机制能够捕捉到控制器(Controller或RestCont…

2024.1.15每日一题

LeetCode 82.删除排序链表中的重复元素 II 82. 删除排序链表中的重复元素 II - 力扣(LeetCode) 题目描述 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例…

常用Java代码-Java中的Optional类和null安全编程

在Java中,Optional 是一个可以为null的容器对象。如果值存在则isPresent()方法返回true。调用get()方法会返回值,如果值为null则抛出NullPointerException。以下是一个详细的代码详解。 在之前的Java版本中,程序员需要手动检查是否为null&am…

docker安装部署Elasticsearch(ES)以及相关配置

Elasticsearch简介 mysql用作持久化存储,ES用作检索 基本概念:index库>type表>document文档 index索引(相当于MySQL的数据库) 动词:相当于mysql的insert 名词:相当于mysql的db Type类型&#xff…

Jenkins-自动化

定时构建 使用Cron表达式指定执行时间。 # 格式 # ┌──分(0 - 59) # │ ┌──时(0 - 23) # │ │ ┌──日(1 - 31) # │ │ │ ┌─月(1 - 12) # │ │ │ │ ┌─星期&#…

这本书没有一个公式,却讲透了数学的本质!

《数学的雨伞下:理解世界的乐趣》。一本足以刷新观念的好书,从超市到对数再到相对论,娓娓道来。对于思维空间也给出了一个更容易理解的角度。 作者:米卡埃尔•洛奈 原文完整版PDF:https://pan.quark.cn/s/019bf19c4981…

2024--Django平台开发-Redis持久化、主从复制、哨兵(十)

before Redis基础: Redis的安装:Windows平台、centos7 Windows平台不推荐安装,但是开发阶段,测试使用还是可以的,推荐使用centos等其他Linux平台,因为将来项目部署也要放到Linux云服务器上。 Redis的通用…

电子学会C/C++编程等级考试2023年09月(六级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:生日相同 在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。试找出所有生日相同的学生。 时间限制:1000 内存限制:65536 输入 第一行为整数n,表示有n个学生,n ≤ 180。此后每行包含一…

PL/1语言 :上古伟大的操作系统IBM System/3603的开发编程语言

PL/I (Programming Language One,发音为/pi /I w / n/,有时也写为PL/1)[1]是最初由IBM开发的一种过程式、命令式的计算机编程语言。它是为科学、工程、商业和系统编程而设计的。自20世纪60年代引入以来,它一直被学术、商业和工业组织不断使用…

14. 接口(适配器设计模式)

接口 接口1. 定义格式2. 成员特点2.1 成员方法2.2 默认方法2.3 静态方法2.4 变量 3. 接口的实现3.1 实现规则3.2 实现格式3.2.1 单实现格式3.2.2 多实现格式 3.3 接口的继承3.3.1 接口与类的继承3.3.2 接口与接口的继承 4.类与接口的区别5. 注意事项 适配器设计模式 接口 接口…

深入理解 go reflect - 要不要传指针

在我们看一些使用反射的代码的时候,会发现,reflect.ValueOf 或 reflect.TypeOf 的参数有些地方使用的是指针参数,有些地方又不是指针参数, 但是好像这两者在使用上没什么区别,比如下面这样: var a 1 v1 :…

dubbo如何实现像本地方法一样调用远程方法

Dubbo 实现像本地方法一样调用远程方法的核心技术是动态代理。Dubbo 使用JDK 动态代理或者字节码增强技术,生成一个代理类,该代理类实现了本地接口,具有本地接口的所有方法。在调用本地接口方法时,会通过代理类的 invoke 方法将请…

golang Iris 运行多个应用

在 Iris 里面,提供了一种方式可以让我们同时运行多个应用: 这里说的应用只是一个 Iris 框架实例,这个实例可以有完全不同的路由定义、中间件等。 不同端口不同应用 package mainimport ("log""net/http""time"…

二叉树的四种遍历方式

二叉树的遍历 二叉树常见的遍历方式有层序遍历,前序遍历,中序遍历,后序遍历 层序遍历 从顶部到底部,逐层进行遍历,且每一层按照从左到右的顺序遍历 层序遍历本质上是广度优先遍历(BFS) 代码实现 广度优先遍历一般使用队…

AI教我学编程之C#类的基本概念(1)

前言 在AI教我学编程之C#类型 中,我们学习了C#类型的的基础知识,而类正是类型的一种. 目录 区分类和类型 什么是类? 什么是类型? 追问 实操 总结 区分类和类型 在 C# 中,类是类型的一种。C# 是一种面向对象的编程…

js 数组内置的方法

JavaScript中数组内置了许多有用的方法,可以方便地操作和处理数组。以下是一些常用的数组方法: push():向数组末尾添加一个或多个元素,并返回新数组的长度。pop():移除数组末尾的元素,并返回被移除的元素。…