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

Python基础-04 字符串

字符串的表示方式

  • 在Python中,可以使用一对单引号/双引号或者一对三个双引号/一对三个单引号表示字符串
a = 'hello'
b = "hello"
c = '''hello'''
d = """hello"""
# 如果字符串里面还有双引号,外面就可以使用单引号
# 反之一样
# 如果字符串里面有双引号,外层也可以使用一对三个双引号或者一对三个单引号
  • 字符串中的转义字符 \
x = 'I\'m xiaoming' # \ 表示的是转义字符,作用是对 \ 后面的字符进行转义
# \' 显示一个普通的单引号
# \" 显示一个普通的双引号
# \n 表示一个换行
# \t 表示一个制表符
# \\ 表示一个普通的反斜线
# 在字符串引号前添加一个r,在Python中表示的是原生字符串

字符串的下标和切片

  • 下标我们也可以称之为索引,表示第几个数据
  • 可迭代对象: str list tuple dict set range 都可以遍历
  • 其中 str list tuple 可以通过下标来获取或者操作数据
  • 在计算机中,下标都是从0开始的
  • 可以通过下标来获取或者修改指定位置的数据

字符串是不可变的数据类型
对于字符串的任何操作都不会修改原有的字符串!!!
切片操作就是从字符串中复制一段指定的内容,生成一个新的字符串

# 切片语法:
# m[start:end:step]
# 包含start,不包含end
# 如果只设置了start,会从start到结尾
m[1:]# 如果只设置了end,会从开头到end
m[:4]# step代表步长,每隔step-1取一次
m[2:5:1]# 步长默认为1,步长不能为0# 步长为负数的时候代表从右往左找,同时应注意start及end
m[15:3:-1]# 可以使用::复制字符串
m[::]# 可以使用::-1将字符串倒置
m[::-1]# start和end如果是负数,但step不为负数时,相当于从右往左找找到对应的start和end(右往左第一个是-1),但字符串输出还是从左往右
a = 'abcdefghijklmnopqrstuvwxyz'
print(a[-9:-5])
# rstuprint(a[-5:-9:-1])
# vuts

字符串的常见操作

a = 'abcdefghijklmnopqrstuvwxyzi'
# 获取字符串的长度
print(len(a))  # 27# 查找内容相关的方法# find/index/rfind/rindex 可以获取指定字符的下标
print(a.find('i'))  # 8,如果字符存在,返回下标,不存在返回-1
print(a.index('i'))  # 8,如果字符存在,返回下标,不存在就报错
print(a.rfind('i'))  # 26,从右往左查找第一个指定字符(最大索引),不存在返回-1
print(a.rindex('i'))  # 26,从右往左查找第一个指定字符(最大索引),不存在报错# 判断相关的方法# startswitch,endswitch,isalpha,isdigit,isalnum,isspace
# is开头的是判断,结果是一个布尔类型
# 均为字符串的使用方法
# startswitch  以某个字符开始
# endswitch  以某个字符结束
# isalpha  是否是字母
# isdigit  是否是数字
# isalnum  是否是数字加字母,只写数字或者只写字母都是True
# isspace  是否全部是空格# 字符串替换方法# replace
word = 'hello'
print(word.replace('l','x'))  # 原来的字符串不会变,而是生成一个新的字符串用来保存替换后的结果

字符串内容分割的相关操作

split rsplit splitlines parttion rparttion

x = 'zhangwan-lisi-wangwu-ermazi-dazhutou'
# 使用split方法,可以将一个字符串切割成一个列表,可以传两个参数,第一个是分隔的字符,第二个是分隔的次数
print(x.split('-'))  # ['zhangwan', 'lisi', 'wangwu', 'ermazi', 'dazhutou']
print(x.split('-',2))  # ['zhangwan', 'lisi', 'wangwu-ermazi-dazhutou']# 使用rsplit方法,可以将一个字符串切割成一个列表,传第二个参数代表从右往左分几次
print(x.rsplit('-'))  # ['zhangwan', 'lisi', 'wangwu', 'ermazi', 'dazhutou']
print(x.rsplit('-',2))  # ['zhangwan-lisi-wangwu', 'ermazi', 'dazhutou']# 使用splitlines,可以将一个字符串按照换行符进行分隔,返回一个列表
a = 'hello \n world'
print(a.splitlines())  # ['hello ', ' world']# 使用partition,可以按照传入的参数从左往右查找第一个匹配的参数,将字符串分为三个部分,返回一个元组
x = 'zhangwan-lisi-wangwu-lisi-ermazi-dazhutou'
print(x.partition("lisi"))  # ('zhangwan-', 'lisi', '-wangwu-lisi-ermazi-dazhutou')# 使用rpartition可以按照传入的参数从右往左查找第一个匹配的参数,将字符串分为三个部分,返回一个元组
print(x.rpartition("lisi"))  # ('zhangwan-lisi-wangwu-', 'lisi', '-ermazi-dazhutou')

字符的编码

  • ASCII码表使用一个字节来表示一个字符.最多只能表示128个,不适用最高位,0-127
  • ISO-8859-1 使用了最高位 0-127 和 ASCII码表完全兼容,最多能表示255个字符,0-254
  • Unicode编码 --> 绝大部分国家的问题都有一个对应的编码

字符串的编码集

使用内置函数 chr 和 ord 能够查看数字和字符的对应关系
ord 获取字符对应的编码
chr 根据编码获取对应的字符

print(ord('A'))  # 65
print(chr(65))  #A
  • 将字符串转换为指定的编码集的结果
  • 如果有一个编码集的结果,想把它转换为对应的字符,使用decode
# 字符串转换为指定的编码集
a = '你'
print(a.encode('gbk'))
print(a.encode('utf-8'))# b'\xc4\xe3'
# b'\xe4\xbd\xa0'# 编码结果转换为对应的字符
x = b'\xe4\xbd\xa0'
print(x.decode('utf-8'))# 你

成员运算符

in 和 not in 运算符的优先级
用来判断一个内容在可迭代对象中是否存在

word = "hello"
c = input("请输入一个字符")for x in word:if x == c :print('你输入的内容存在')break
else:print('你输入的内容不存在')

格式化打印字符串

  • 可以使用 % 占位符来表示格式化一个字符串
  • %s 表示的是字符串的占位符
  • %d 表示的是整数的占位符
    • %nd 打印时,显示n位,如果不够,在前面使用空格补齐
  • %f 表示的是浮点数的占位符
    • %.nf 打印时保留小数点后n位
  • %x 将数字使用十六进制输出
  • %% 输出一个%
name = "zhangsan"
age = 18
print('我叫%s,今年%d岁了'%(name,age))# 我叫zhangsan,今年18岁了# %d 拓展用法
print('今天是第%3d天'%(5))
print('今天是第%03d天'%(5))
print('今天是第%-3d天'%(5))# 今天是第  5天
# 今天是第005天
# 今天是第5  天# %f 拓展用法
print('我有%.2f元钱'% 3.1415926)# 我有3.14元钱

字符串的format方法的使用

  • {}也可以用于字符串占位
# {}中什么都不写,会读取format方法后面的内容,一一对应填充
x = '大家好,我是{},今年{}岁了'.format('zhangsan',18)
print(x)  # 大家好,我是zhangsan,今年18岁了# {数字}会根据数字的顺序读取format方法后面的内容,按顺序对应,数字从0开始
x = '大家好,我是{1},今年{0}岁了'.format(18,'zhangsan')
print(x)  # 大家好,我是zhangsan,今年18岁了# {变量}会根据变量读取format方法后面的内容,一一对应填充
x = '大家好,我是{name},今年{age}岁了'.format(age = 18,name = 'zhangsan')
print(x)  # 大家好,我是zhangsan,今年18岁了# {数字}{变量}可以混合使用,但是需要一一对应
# {}和{数字}不可以混合使用# 列表配合format使用
d = ['zhangsan',18]
x = '大家好,我是{},今年{}岁了'.format(*d)
print(x)  # 大家好,我是zhangsan,今年18岁了#字典配合format使用
d = {'name':'zhangsan','age':'18'}
x = '大家好,我是{name},今年{age}岁了'.format(**d)
print(x)  # 大家好,我是zhangsan,今年18岁了

相关文章:

Python基础-04 字符串

字符串的表示方式 在Python中,可以使用一对单引号/双引号或者一对三个双引号/一对三个单引号表示字符串 a hello b "hello" c hello d """hello""" # 如果字符串里面还有双引号,外面就可以使用单引号 # 反之一样 # 如果字符串里…...

VVC之编码结构

VVC之编码结构(新一代通用视频编码的读书笔记) 缩写概述EncAppmain函数解读 缩写 缩写含义CVSCoded Video Sequence, 编码视频序列IRAPIntra Random Access Point, 帧内随机接入点GDRGradual Decoding Refresh, 逐渐解码刷新AUAccess Unit, 访问单元PUP…...

FPGA基于SFP光口实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案4、vivado工程详解5、上板调试验证并演示6、福利:工程代码的获取 1、前言 目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代…...

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细

Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细 一 Redis的主从复制二 主从复制的作用三 主从复制的流程四 主从复制实验4.1 环境部署4.2 安装Redis(主从服务器)4.3 修改Master节点Redis配置文件 (192.168.163.100)4.4 修改Slave节点Redis配置…...

整柜海运到美国的规格和收费标准是什么

整柜海运是指将所有货物安装在一个整箱内,由发货人和收货人共同操作,而目的港的收货人一般只有一个,方便操作。整柜海运到美国的主要流程有以下几个步骤:订舱、装柜、报关、海运、清关、提柜和送货。实际上,国际物流出…...

Session和Cookie区别介绍+面试题

Session 会话: 对应的英文单词:session用户打开浏览器,进行一系列操作,然后关闭浏览器。整个过程叫做一次会话一个会话包含多次请求 session机制属于B/S结构的一部分,主要的作用就是为了保存会话状态。(用户登录成功后…...

easyx

普通的画线图什么的 首先我们需要安装一个easyx的图形库&#xff0c;然后把头文件搞出来 #include <stdio.h> #include <easyx.h>//easyx画线啥啥的图形库 #include <graphics.h> #include <math.h> #include <conio.h>//键盘操作的头文件 设…...

记一次科学

华为云与Centos8 华为云99元Hongkong的服务器&#xff1a;1M&#xff0c;1C&#xff0c;2G&#xff0c;40G&#xff0c;自带不可更改的Centos 8.2 64bit 华为yum源不可以&#xff0c;网上找了可用的CentOS8 官方源不支持后配置yum源 # 备份 mv /etc/yum.repos.d/CentOS-Base…...

亚马逊被人差评了怎么办?

第一种&#xff1a; 也是最简单的做法就是通过电话或者邮件联系留差评的买家&#xff0c;大致意思就是按照货值的2-3倍作为赔偿&#xff0c;能不能把差评给删了 赔偿一个普通产品2-3倍的价格比起找服务商删一个差评几百到一千不等可以说是绰绰有余了&#xff0c;碰到那种愿意…...

【目标检测】YOLOv5:修改自己的网络结构

前言 YOLOv5就像一座金矿&#xff0c;里面有无数可以学习的东西。之前的博文一直将YOLOv5当作一个黑盒使用&#xff0c;只考虑模型的输入和输出&#xff0c;以此来对模型进行二次开发。 本篇博文将更近一层&#xff0c;深入到“金矿”内部&#xff0c;来尝试对模型结构进行替换…...

spring boot 工程整合mongodb,遇到的坑

首先说一下背景&#xff0c;因为其他的一个web工程有使用mongo&#xff0c;我想着给另外一个工程把mongo也加过来吧。也是最近做一个发送 丘比特信 的需求&#xff0c;觉得这个信应该是存到 mongodb。结果拿过来遇到了很大的坑&#xff0c;也是对版本对原理不了解吧。 下面介…...

防抖函数(最全 最干净 最好理解)

1.应用场景 1.input输入框 输入远程查询 2.邮箱&#xff0c;手机号验证&#xff0c;用户名验证 3.resize等高评率场景 2.解决问题 高频场景带来的重复渲染 等问题 多次操作 只在操作结束后再执行操作函数 3.具体实现 3.1this问题&#xff08;因为settimeout是window的对…...

王小川,才是深「爱」李彦宏的那个人?

在推出中国首个类ChatGPT产品「文心一言」后&#xff0c;李彦宏在接受专访时断言&#xff0c;中国基本不会再出一个OpenAI了&#xff0c;「创业公司重新做一个ChatGPT其实没有多大意义&#xff0c;基于大语言模型开发应用机会很大&#xff0c;没有必要再重新发明一遍轮子。」 听…...

南京邮电大学通达学院2023《电子装配实习》报告

南京邮电大学通达学院2023《电子装配实习》报告 一 声明二 题目/实习报告提示三 例答 红笺寄 休遣玉人知 ——赠nmy 一 声明 南京邮电大学通达学院2023《电子装配实习》报告 答案更新时间:2023.04.10&#xff0c;已更新完成&#xff0c;如无错误不在更新 由于作者解答能力有限…...

Linux--tty

Linux 终端(TTY) TTY 是 Teletype 或 Teletypewriter 的缩写&#xff0c;原来是指电传打字机&#xff0c;后来这种设备逐渐键盘和显示器取代。不管是电传打字机还是键盘显示器&#xff0c;都是作为计算机的终端设备存在的&#xff0c;所以 TTY 也泛指计算机的终端(terminal)设…...

一位女程序员的自述:我是如何成为前端工程师的

今天&#xff0c;我想和大家分享一下我的职场经历&#xff1a;我是如何成为一名前端工程师的&#xff0c;以及我为什么会选择这个职业。此外&#xff0c;大家比较关心的是我们为什么要出国工作呢&#xff1f;也是想给自己的职业生涯做一个阶段性的总结&#xff0c;尤其是作为一…...

C++命名空间详解

1.什么是命名空间 在c中&#xff0c;名称&#xff08;name&#xff09;可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大&#xff0c;名称互相冲突性的可能性越大。另外使用多个厂商的类库时&#xff0c;也可能导致名称冲突。为了避免&#xff0c;在大规模程序…...

HDMI EDID概念梳理

EDID概念梳理&#xff1a; EDID数据格式&#xff1a; EDID包含两个部分&#xff0c;基本的EDID只有128个字节&#xff0c;还有128字节的扩展EDID&#xff0c;扩展部分不是必须有的。那通常电视都有扩展EDID。那EDID的详细定义在规范里面都可以找到&#xff0c;主要有以下几部分…...

Android端推送消息之极光推送

推送方式 轮询 --实现方式: 周期性主动获取网络中的数据; --缺点: 费电, 费流量; SMS --实现方式: 服务器端向手机端发送短信, 手机监听短信广播, 将拦截的短信信息进行显示; --优点: 省电, 省流量, 在没有网络的偏远地点也能接收到推送消息; --缺点: 费钱, 一毛钱一条;…...

2023测试工程师全新技术栈,吃透这些,起薪就15k

相信每个准备软件测试面试的同学&#xff0c;不管你是大学刚毕业&#xff0c;满心憧憬着进入公司实习、非计算机行业转行软件测试、自学测试就业还是培训后就业&#xff0c;都会面临着众多的疑问和不解&#xff0c;那就是该怎么走出着第一步&#xff0c;今天本文一次性告诉你&a…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

数据分析六部曲?

引言 上一章我们说到了数据分析六部曲&#xff0c;何谓六部曲呢&#xff1f; 其实啊&#xff0c;数据分析没那么难&#xff0c;只要掌握了下面这六个步骤&#xff0c;也就是数据分析六部曲&#xff0c;就算你是个啥都不懂的小白&#xff0c;也能慢慢上手做数据分析啦。 第一…...