当前位置: 首页 > news >正文

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()    # 将首字母转换为小写

相关文章:

python 字符串的详细处理方法

当前版本: Python 3.8.4 简介 字符串是由字符组成的序列,可以用单引号、双引号或三引号(单引号或双引号的连续使用)括起来。一般用来表示和处理文本信息,可以是字母、数字、标点符号以及其他特殊字符,用于…...

蓝桥杯AcWing学习笔记 8-2数论的学习(下)

蓝桥杯 我的AcWing 题目及图片来自蓝桥杯C AB组辅导课 数论(下) 蓝桥杯省赛中考的数论不是很多,这里讲几个蓝桥杯常考的知识点。 约数个数定理 我们如何去求一个数的约数个数呢? N N N分解质因数的结果: N P 1 α…...

vcs makefile

主要参考: VCS使用Makefile教程_vcs makefile-CSDN博客https://blog.csdn.net/weixin_45243340/article/details/129255218?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170524049516800227431373%2522%252C%2522scm%2522%253A%252220140713.1301023…...

《Training language models to follow instructions》论文解读--训练语言模型遵循人类反馈的指令

目录 1摘要 2介绍 方法及实验细节 3.1高层次方法论 3.2数据集 3.3任务 3.4人体数据收集 3.5模型 3.6评价 4 结果 4.1 API分布结果 4.2公共NLP数据集的结果 4.3定性结果 问题 1.什么是rm分数 更多资料 1摘要 使语言模型更大并不能使它们更好地遵循用户的意图。例…...

Redis的实现二: c、c++的网络通信编程技术,让服务器处理多个client

看过上期的都知道,我是搞java的,所以对这些可能理解不是很清楚,各位看完可以尽情发言。 事件循环和非阻塞IO 在服务器端网络编程中,有三种处理并发连接的方法。 它们是:分叉、多线程和事件循环。分叉为每个客户端连接创建新…...

QT上位机开发(动画效果)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 不管是仿真,还是对真实环境的一比一模拟,动画都是非常好的一种呈现方式。目前在qt上面,实现动画主要有两种方法…...

手写实现 bind 函数

Function.prototype.myBind function(context) {if (typeof this ! function) {return}const args [...arguments].slice(1)const fn thisreturn function Fn() {// 判断函数作为构造函数的情况,这个时候需要传入当前的函数的this给apply调用,其余情况…...

安卓Android Studio读写MifareOne M1 IC卡源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c-s.w4002-21818769070.11.3d2f789eOUPJBK <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xm…...

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

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

Native.js是什么

Native.js 是一个开源项目&#xff0c;旨在通过 JavaScript 调用原生 Android API。它的目标是让 JavaScript 开发者能够使用 Android 原生 API&#xff0c;从而在不编写原生代码的情况下构建 Android 应用。 使用 Native.js&#xff0c;开发者可以使用 JavaScript 调用 Andro…...

Vant-ui图片懒加载

核心代码 在你的全局顶部引入和初始化 Vue.use(vant.Lazyload, {loading: /StaticFile/img/jiazai.jpg,error: /StaticFile/img/jiazai.jpg,lazyComponent: false, });//图片懒加载 <img v-lazy"https://img-blog.csdnimg.cn/direct/3d2c8a7e2c0040488a8128c3e381d58…...

创建EasyCodeMybatisCodeHelperPro模板文件用于将数据库表生成前端json文件

在intellij idea中&#xff0c;通过插件EasyCodeMybatisCodeHelperPro&#xff0c;从现有的模板文件中选择一个复制粘贴&#xff0c;然后稍为修改&#xff0c;即可得到一个合适的模板文件。 现在的前端&#xff0c;越来越像后端。TypeScript替代了JavaScript&#xff0c;引入了…...

华为端口安全常用3种方法配置案例

安全动态mac地址学习功能 [Huawei]int g0/0/01 interface GigabitEthernet0/0/1 port-security enable //开启安全 port-security max-mac-num 2 //最多为2个mac地址学习 port-security protect-action restrict //丢包带警告 port-security aging-time 1 //mac地址的老化时间…...

RH850P1X芯片学习笔记-Flash Memory

文章目录 FeaturesClock Supply Block DiagramFlash SizeMemory ConfigurationRegistersRegister Base AddressList of RegistersRegister Reset Condition 与Flash Memory相关的操作模式Functional OverviewOption BytesOPBT0 — Option Byte 0OPBT1 — Option Byte 1OPBT2 —…...

利用XSS漏洞打cookie

目录 1、为什么要打cookie&#xff1f; 2、怎样利用XSS来打cookie&#xff1f; 3、利用Bluelotus_xssReceiver平台来打cookie 4、利用beef-xss平台来打cookie 上一篇给大家介绍了xss漏洞的基础知识&#xff0c;在本篇章将会介绍和演示一下利用xss漏洞打cookie的演示&#x…...

用java写个redis工具类

下面是一个简单的Redis工具类的示例&#xff0c;使用Java语言编写&#xff1a; import redis.clients.jedis.Jedis;public class RedisUtils {private static Jedis jedis;public static void connect(String host, int port) {jedis new Jedis(host, port);}public static v…...

实现防抖函数

// 防抖就是&#xff0c;事件触发 delay 秒后再执行&#xff0c;如果有重新的触发&#xff0c;重新计时 function debounce(func, delay) {if(typeof func ! function) {return}let timer 0return function () {if (timer) {clearTimeout(timer)timer null}timer setTimeout…...

MetaGPT task1学习

基础知识学习了解&#xff1a; 安装环境&#xff1a; 获取MetaGPT 使用pip获取MetaGPT pip install -i https://pypi.tuna.tsinghua.edu.cn/simple metagpt0.5.2 配置MetaGPT 完成MetaGPT后&#xff0c;我们还需要完成一些配置才能开始使用这个强力的框架&#xff0c;包括配…...

关于量子计算机的设想

从CPU架构说起 CISCRISCNISCCCSC CISC是复杂指令集计算机&#xff0c;以x86为代表&#xff1b; RISC是精简指令集计算机&#xff0c;以ARM为代表&#xff1b; NISC是无指令集计算机&#xff0c;CCSC是核-电路分离计算机&#xff0c;这两个是本文要讨论的内容。 如果没有指令…...

序列模型(4)—— Scaling Laws

本文介绍 LLM 训练过程中重要的 Scaling Laws&#xff0c;这是一个经验规律&#xff0c;指出了固定训练成本&#xff08;总计算量FLOPs&#xff09; C C C 时&#xff0c;如何调配模型规模&#xff08;参数量&#xff09; N N N 和训练 Token 数据量 D D D&#xff0c;才能实现…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...