Python入门-字符串Str

字符串

字符串 是Python中的 不可变 数据类型

1.字符串相关处理方法

在这里插入图片描述

  1. 大小写转换
# 大小写转换
s1='HelloWorld'
new_s2=s1.lower()
print(s1,new_s2)new_s3=s1.upper()
print(new_s3)

结果:

D:\Python_Home\venv\Scripts\python.exe D:\Python_Home\chap6\示例6-1字符串的相关处理方法1.py 
HelloWorld helloworld
HELLOWORLD
  1. 字符串的分隔
e_mail='2624137649@qq.com'
lst=e_mail.split('@')
print('邮箱名:',lst[0],'邮箱服务器域名:',lst[1])

结果:

邮箱名: 2624137649 邮箱服务器域名: qq.com
  1. 判断前缀和后缀
s1='HelloWorld'
print(s1.startswith('H')) #True
print(s1.startswith('P')) #False print('demo.py'.endswith('.py'))
print('demo.text'.endswith('.text'))

结果:

True
False
True
True
  1. 字符串的替换
s='HelloWorld'
#字符串的替换
new_s=s.replace('o','你好',1) #最后一个参数是替换次数,默认是全部替换
print(new_s)

结果:

Hell你好World
  1. 字符串在指定的宽度范围内居中
s='HelloWorld'
print(s.center(20))
print(s.center(20,'*'))

结果:

     HelloWorld     
*****HelloWorld*****

注:第一个HelloWorld 左右两边都有空格的

  1. 去掉字符串左右的空格
s=' Hellow  world   '
print(s.strip())
print(s.lstrip())  #去掉字符串左侧的空格
print(s.rstrip())  #去掉字符串右侧的空格

结果:

Hellow  world
Hellow  world   Hellow  world
  1. #去掉指定的字符
s3='dl-Helloworld'
print(s3.strip('ld'))  #与顺序无关  -Hellowor
print(s3.lstrip('ld'))          # -Helloworld
print(s3.rstrip('dl'))          # dl-Hellowor

结果:

-Hellowor
-Helloworld
dl-Hellowor

2.格式化字符串

  • 使用占位符进行格式化
name='马冬梅'
age=18
score=98.5print('姓名:%s,年龄:%d,成绩:%f' % (name,age,score))

结果:

姓名:马冬梅,年龄:18,成绩:98.500000

此时成绩后面有很多小数点 00000怎么办?
那我们就精确一下位数,更改代码:

print('姓名:%s,年龄:%d,成绩:%.1f' % (name,age,score))

结果:

姓名:马冬梅,年龄:18,成绩:98.5
  • f-string
name='马冬梅'
age=18
score=98.5print(f'姓名:{name},年龄:{age},成绩:{score}')

结果:

姓名:马冬梅,年龄:18,成绩:98.5
  • 使用字符串的 format 方法 #0、1、2 相当于索引
name='马冬梅'
age=18
score=98.5
print('姓名:{0},年龄:{1},成绩:{2}'.format(name,age,score))
print('姓名:{2},年龄:{0},成绩:{1}'.format(age,score,name))

结果:

姓名:马冬梅,年龄:18,成绩:98.5
姓名:马冬梅,年龄:18,成绩:98.5

3.字符串的编码和解码

将str类型转换成 bytes 类型,需要用到字符串的 encode()方法

str.encode(encoding=‘utf-8’,errors=‘strict/ignore/replace’)

bytes.decode(encoding=‘utf-8’,errors=‘strict/ignore/replace’)

注:errors=‘strict/ignore/replace’ 里面是 分别是三种编码和解码出错时,出现的三种反应的模式

  • 编码:
s='伟大的中国梦'
#编码 str->bytes
scode=s.encode(errors='replace')  #默认是utf-8,因为 utf-8中文占3个字节
print(scode)

结果:

b'\xe4\xbc\x9f\xe5\xa4\xa7\xe7\x9a\x84\xe4\xb8\xad\xe5\x9b\xbd\xe6\xa2\xa6'

gbk:

scode_gbk=s.encode('gbk',errors='replace')
print(scode_gbk)

结果:

b'\xce\xb0\xb4\xf3\xb5\xc4\xd6\xd0\xb9\xfa\xc3\xce'
  • 编码中的出错问题:
    (这里我们想办法去找一个图标)

(1).replace

s2='耶🤮'
scode_error=s2.encode('gbk',errors='replace')   #strict
print(scode_error)

结果:

b'\xd2\xae?'

replace 模式下这种图标编程一种: 问号

(2). ignore (忽略)

s2='耶🤮'
scode_error=s2.encode('gbk',errors='ignore')   #strict
print(scode_error)

结果:

b'\xd2\xae'

它就忽略了

(3). strict

s2='耶🤮'
scode_error=s2.encode('gbk',errors='strict')   #strict
print(scode_error)

结果:

Traceback (most recent call last):File "D:\Python_Home\chap6\示例6-5字符串的编码和解码.py", line 17, in <module>scode_error=s2.encode('gbk',errors='strict')   #strict^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f92e' in position 1: illegal multibyte sequence

报错了

  • 解码 bytes->str

print(bytes.decode(scode_gbk,'gbk'))
print(bytes.decode(scode,'utf-8'))

结果:

伟大的中国梦
伟大的中国梦

4.数据的验证

  • 判断是否为数字
print('123'.isdigit())  #True
print('一二三'.isdigit())  #False
print('02j223'.isdigit()) #False
  • 所有字符都是数字
print('1234'.isnumeric())    #True
print('一二三'.isnumeric())   #True
print('02j223'.isnumeric())  #False
print('壹贰叁'.isnumeric())   #True

中文的 "一二三"和 “壹贰叁” 都是可以识别的

  • 所有字符都是字母(包含中文字符)
print('hello你好'.isalpha())      #True
print('hello你好123'.isalpha())   #False
print('hello你好一二三'.isalpha()) #True
print('hello你好壹贰叁'.isalpha())  #True
  • 所有字符都是数字或字母
print('hello你好'.isalnum())      #True
print('hello你好123'.isalnum())   #False
print('hello你好一二三'.isalnum()) #True
print('hello你好壹贰叁'.isalnum()) #True
  • 所有字符都是首字母大写
print('Hello'.istitle())        #True
print('HelloWorld'.istitle())   #False
print('Helloworld'.istitle())   #True
print('Hello World'.istitle())  #True
print('Hello world'.istitle())  #False
  • 判断是否都是空白字符
print('\t'.isspace())    #True
print(' '.isspace())     #True
print('\n'.isspace())    #True

字符串的拼接

  • 使用+号
s1='hello'
s2='world'
print(s1+s2)
  • 使用字符串的 join()方法
s1='hello'
s2='world'
print(''.join([s1,s2]))
print('*'.join(['hello','world','python','java','php']))

结果:

helloworld
hello*world*python*java*php
  • 直接拼接
print('hellow''world')
  • 使用格式化字符串进行拼接
s1='hello'
s2='world'
print('%s%s' % (s1,s2))
print(f'{s1}{s2}')
print('{0}{1}'.format(s1,s2))

字符串的去重

s='helloworldhelloworlddasdfrgrtg5fefrf'#字符串拼接及 not in
new_s=''
for item in s:if item not in new_s:new_s+=item  #拼接
print(new_s)#使用索引 + not in
new_s2=''
for i in range(len(s)):if s[i] not in new_s2:new_s2+=s[i]
print(new_s2)# 通过集合去重+列表排序
new_s3=set(s)
lst=list(new_s3)
lst.sort(key=s.index)
print(''.join(lst))

结果:

D:\Python_Home\venv\Scripts\python.exe D:\Python_Home\chap6\示例6-8字符串的去重操作.py 
helowrdasfgt5
helowrdasfgt5
helowrdasfgt5

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

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

相关文章

TICS Pro 配置时钟芯片

TICS Pro为TI公司提供的配置TI公司时钟芯片的软件&#xff0c;下载链接: TICS Pro. 软件使用 首先在设置选择找到需要配置的芯片&#xff0c;本文以LMX2571为例 红框中的前3行都可以设置芯片&#xff0c;第一个是选项卡设置&#xff0c;第二个是寄存器设置&#xff0c;第三个…

开箱即用的企业级数据和业务管理中后台前端框架Ant Design Pro 5的开箱使用和偏好配置

Ant Design Pro 介绍 Ant Design Pro 是一个开箱即用的企业级前端解决方案&#xff0c;基于 Ant Design 设计体系&#xff0c;提供了丰富的组件和功能&#xff0c;帮助开发者更快速地开发和部署企业级应用。 Ant Design Pro 使用 React、umi 和 dva 这三个主要的前端开发技术…

腾讯云轻量服务器和云服务器区别对比(超详细)

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

JVM篇:JVM的简介

JVM简介 JVM全称为Java Virtual Machine&#xff0c;翻译过来就是java虚拟机&#xff0c;Java程序&#xff08;Java二进制字节码&#xff09;的运行环境 JVM的优点&#xff1a; Java最大的一个优点是&#xff0c;一次编写&#xff0c;到处运行。之所以能够实现这个功能就是依…

张江智荟毁约offer

毕业8年后&#xff0c;找工作被国企歧视学历&#xff01;已经收到了offer&#xff0c;在入职前一周被通知要撤回offer&#xff0c;拒绝录用&#xff0c;理由居然是他们只要本科211以上的人 这是我今天&#xff08;2023-12-26&#xff09;亲身经历的事&#xff0c;听说过面试前…

elasticsearch-hadoop.jar 6.8版本编译异常

## 背景 重新编译 elasticsearch-hadoop 包&#xff1b; GitHub - elastic/elasticsearch-hadoop at 6.8 编译 7.17 版本时很正常&#xff0c;注意设置下环境变量就好&#xff0c;JAVA8_HOME/.... 编译 6.8 版本时&#xff08;要求jdk8 / jdk9&#xff09;&#xff0c;出现…

docker学习(十八、network介绍)

文章目录 熟悉的ifconfigDocker 网络的使用方式Docker 网络的作用Docker 网络模式注意事项 首先&#xff0c;我们要知道什么是 Docker 网络。简单来说&#xff0c;它就是 Docker 中用于实现容器间通信的一个东西。 network相关内容&#xff1a; docker学习&#xff08;十八、ne…

网络隔离后,怎样建立高效安全的数据安全交换通道?

数据安全对企业生存发展有着举足轻重的影响&#xff0c;数据资产的外泄、破坏都会导致企业无可挽回的经济损失和核心竞争力缺失。数据流动才能让其释放价值&#xff0c;想要保护企业核心资产&#xff0c;就要实现数据安全交换。 很多企业为了防止知识产权、商业机密数据泄露&am…

白话机器学习的数学-1-回归

1、设置问题 投入的广告费越多&#xff0c;广告的点击量就越高&#xff0c;进而带来访问数的增加。 2、定义模型 定义一个函数&#xff1a;一次函数 y ax b &#xff08;a 是斜率、b 是截距&#xff09; 定义函数&#xff1a; 3、最小二乘法 例子&#xff1a; 用随便确定的参…

elasticsearch系列七:聚合查询

概述 今天咱们来看下es中的聚合查询&#xff0c;在es中聚合查询分为三大类bucket、metrics、pipeline&#xff0c;每一大类下又有十几种小类&#xff0c;咱们各举例集中&#xff0c;有兴许的同学可以参考官网&#xff1a;https://www.elastic.co/guide/en/elasticsearch/refere…

使用pytorch搭建ResNet并基于迁移学习训练

这里的迁移学习方法是载入预训练权重的方法 net resnet34()# load pretrain weights# download url: https://download.pytorch.org/models/resnet34-333f7ec4.pthmodel_weight_path "./resnet34-pre.pth"assert os.path.exists(model_weight_path), "file {}…

Adobe Photoshop各版本安装指南

下载链接 https://pan.baidu.com/s/1b9BFDSIVLGXY4e0r5a5Srg?pwd0531 #2024版 1.鼠标右击【PS2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 PS2024(64bit)】 2.打开解压后的文件夹&#xff0c;鼠标右击【Set-up】选择【以管…

HarmonyOS4.0系统性深入开发07创建一个ArkTS卡片

创建一个ArkTS卡片 在已有的应用工程中&#xff0c;创建ArkTS卡片&#xff0c;具体操作方式如下。 创建卡片。 根据实际业务场景&#xff0c;选择一个卡片模板。 在选择卡片的开发语言类型&#xff08;Language&#xff09;时&#xff0c;选择ArkTS选项&#xff0c;然后单…

全书大纲【计算机图像处理】

全书大纲【计算机图像处理】 前言版权推荐全书大纲第一章 01数字图像处理概论一、图像与数字图像二、数字图像处理与图像工程三、数字图像处理系统四、数字图像处理技术小结作业 第二章 02视觉过程与成像基础一、视觉过程二、光与电磁波谱三、成像模型小结作业 第三章 03采样量…

边界判断缺失

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

基于SSM实现的电动汽车充电网点管理系统

一、系统架构 前端&#xff1a;jsp | jquery | bootstrap | css 后端&#xff1a;spring | springmvc | jdbc 环境&#xff1a;jdk1.8 | mysql 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-登录 03. web端-注册 04. web端-我要充电 05. web端-个人中心-消…

在3D建模领域中Maya和Blender在专业性上哪个更强

在3D建模领域中&#xff0c;3D Max、Maya和Blender等软件都是备受推崇的工具&#xff0c;它们各自独特的功能和特性为用户提供了广泛的选择。然而&#xff0c;在Blender和Maya之间&#xff0c;究竟哪一款软件更加易于上手&#xff1f;哪一款功能更为出众&#xff1f;这一问题的…

Dockerfile - 基于 SpringBoot 项目自定义镜像(项目上线全过程)

目录 一、Dockerfile 自定义项目镜像 1.1、创建 SpringBoot 项目并编写 1.2、打包项目&#xff08;jar&#xff09; 1.3、编写 Dockerfile 文件&#xff0c;构建镜像 1.4、运行镜像并测试 一、Dockerfile 自定义项目镜像 1.1、创建 SpringBoot 项目并编写 a&#xff09;简…

Qt学习:Qt的意义安装Qt

Qt 的简介 QT 是一个跨平台的 C图形用户界面应用程序框架。它为程序开发者提供图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 支持平台 xP 、 Vista、Win7、win8、win2008、win10Windows . Unix/Linux: Ubuntu 等…

RustDesk连接客户端提示key不匹配 Key Mismatch无法连接(已解决)

环境: RustDesk1.1.9 服务端docker部署 问题描述: RustDesk连接客户端提示key不匹配 Key Mismatch无法连接 解决方案: 1.docker部署RustDesk服务检查配置 networks:rustdesk-net:external: falsevolumes:hbbr:hbbs:services:hbbs:container_name: rustdesk-hbbsport…