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="""
    string1
    string2
"""

        

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

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.mfbz.cn/a/321693.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣每日一练(24-1-14)

做过类似的题,一眼就是双指针,刚好也就是题解。 if not nums:return 0p1 0 for p2 in range(1, len(nums)):if nums[p2] ! nums[p1]:p1 1nums[p1] nums[p2]return p1 1 根据规律,重复的数字必定相连,那么只要下一个数字与上一…

WeNet2.0:提高端到端ASR的生产力

摘要 最近,我们提供了 WeNet [1],这是一个面向生产(工业生产环境需求)的端到端语音识别工具包,在单个模型中,它引入了统一的两次two-pass (U2) 框架和内置运行时(built-in runtime)…

SpringCloud.04.熔断器Hystrix( Spring Cloud Alibaba 熔断(Sentinel))

目录 熔断器概述 使用Sentinel工具 什么是Sentinel 微服务集成Sentinel 配置provider文件,在里面加入有关控制台的配置 实现一个接口的限流 基本概念 重要功能 Sentinel规则 流控规则 简单配置 配置流控模式 配置流控效果 降级规则 SentinelResource…

Linux/Traverxec

Enumeration nmap 使用nmap快速扫描目标,发现对外开放了22和80,第一个问题就是问80端口运行的是什么服务,针对这两个端口扫描对应的详细信息后就能得到答案 Nostromo 从nmap的扫描结果可以看到,目标开启了80端口,且…

一二三应用开发平台文件处理设计与实现系列之5——MinIO技术预研

背景 上篇介绍了文件读写框架设计与实现,同时顺便说明了本地磁盘存储模式的实现模式。 今天来说下基于文件读写框架,如何集成对象存储组件minio,集成之前,需要对minio进行必要的了解,本篇是minio的技术预研。 minio简…

Python - 深夜数据结构与算法之 AVL 树 红黑树

目录 一.引言 二.高级树的简介 1.树 2.二叉树 3.二叉搜索树 4.平衡二叉树 三.AVL 树 ◆ 插入节点 ◆ 左旋 ◆ 右旋 ◆ 左右旋 ◆ 右左旋 ◆ 一般形式 ◆ 实际操作 ◆ 总结 四.红黑树 ◆ 概念 ◆ 示例 ◆ 对比 五.总结 一.引言 前面我们介绍了二叉树、二叉…

论文阅读 Self-Supervised Burst Super-Resolution

这是一篇 ICCV 2023 的文章,主要介绍的是用自监督的方式进行多帧超分的学习 Abstract 这篇文章介绍了一种基于自监督的学习方式来进行多帧超分的任务,这种方法只需要原始的带噪的低分辨率的图。它不需要利用模拟退化的方法来构造数据,而且模…

爬虫验证码分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 本文只做简单的验证码分析,不涉及扣代码等逆向 一、常见得验证码平台 易盾:https://dun.163.com/pr…

重学Java 5 idea详细使用和运算符

慢点跑,前面的路不好走 ——24.1.14 一、IDEA的使用 1.idea的介绍 1.概述:开发工具 2.特点: a、idea是java写的,所以本地上必须有正确的jdk环境 b、idea自动保存 c、不用我们打开dos命令窗口执行javac和java命令 d、idea有强大的…

数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)一

第四部分、字符串,数据结构中的串存储结构 串存储结构,也就是存储字符串的数据结构。 很明显,字符串之间的逻辑关系也是“一对一”,用线性表的思维不难想出,串存储结构也有顺序存储和链式存储。 提到字符串&#xff…

Python 自学(八) 之模块

目录 1. import语句导入模块 P206 2. from ... import 语句导入模块 P207 3. 模块的搜索目录 sys.path P209 4. 以主程序的形式执行 __name__ P212 5. python中的包 P213 1. import语句导入模块 P206 同一目录下&…

【MATLAB】 SSA奇异谱分析信号分解算法

有意向获取代码,请转文末观看代码获取方式~ 1 基本定义 SSA奇异谱分析(Singular Spectrum Analysis)是一种处理非线性时间序列数据的方法,可以对时间序列进行分析和预测。 它基于构造在时间序列上的特定矩阵的奇异值分解&#…

12AOP面向切面编程/GoF之代理模式

先看一个例子: 声明一个接口: // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口: package com.sunsplanter.prox…

编曲混音FL Studio21.2对电脑有什么配置要求

FL Studio 21是一款非常流行的音乐制作软件,它可以帮助音乐人和制作人创作出高质量的音乐作品。然而,为了保证软件的稳定性和流畅性,用户需要知道FL Studio 21对电脑的配置要求。本文将介绍FL Studio 21的配置要求,以帮助用户选择…

Open CV 图像处理基础:(七)学习 OpenCV 的图像增强和边缘检测功能

在Java中学习使用 OpenCV 的图像增强和边缘检测功能 目录 在Java中学习使用 OpenCV 的图像增强和边缘检测功能前言图像增强功能对比度调整(Core.addWeighted())函数原型:参数说明:代码:示例 直方图均衡化(I…

强化学习应用(五):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

图形化编程:开启孩子创新思维的新途径

在科技日新月异的今天,编程已经成为了一项重要的技能。然而,对于孩子们来说,传统的编程语言可能会显得过于复杂和抽象。这时,图形化编程就显得尤为重要。那么,什么是图形化编程?它对孩子有什么帮助呢&#…

web前端算法简介之字典与哈希表

回顾 栈、队列 : 进、出 栈(Stack): 栈的操作主要包括: 队列(Queue): 队列的操作主要包括: 链表、数组 : 多个元素存储组成的 简述链表:数组&…

权责发生制和收付实现制

目录 一. 权责发生制(应记制)二. 收付实现制 \quad 一. 权责发生制(应记制) 应计制就是应该记入的意思 各项收入和费用的确认应当以“实际发生”(归属期)而不是以款项的实际收付作为记账的基础。 正是有会计期间假设,才有权责发生制和收付实…

Odrive 学习系列二:将烧录工具从ST-Link V2修改为JLink

一、背景: 通过观察odrive解压后的内容,可以看到在下面配置文件及makefile文件中的配置设置的均为openOCD + stlink v2,例如makefile中: # This is only a stub for various commands. # Tup is used for the actual compilation.BUILD_DIR = build FIRMWARE = $(BUILD_DI…
最新文章