Python入门-字符串Str

news2025/1/16 6:03:09

字符串

字符串 是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.5

print('姓名:%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.5

print(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.coloradmin.cn/o/1340709.html

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

相关文章

TiDB SQL调优案例TiFlash

背景 早上收到某系统的告警tidb节点挂掉无法访问&#xff0c;情况十万火急。登录中控机查了一下display信息&#xff0c;4个TiDB、Prometheus、Grafana全挂了&#xff0c;某台机器hang死无法连接&#xff0c;经过快速重启后集群恢复&#xff0c;经排查后是昨天上线的某个SQL导…

代码随想录二刷 | 二叉树 |二叉搜索树中的搜索

代码随想录二刷 &#xff5c; 二叉树 &#xff5c;二叉搜索树中的搜索 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述 700.二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回…

编译错误:C4056E type of input file ‘xxx‘ unknown

最近在Proteus上面进行仿真&#xff0c;将编译后的hex文件导入到电路图中&#xff0c;进行程序运行的时候&#xff0c;Proteus报了这么一个错误&#xff1a;Error: C4065E: type of input file Pian unknown 我上网一搜&#xff0c;好像与文件名称中存在空格有关&#xff0c;导…

别再写一堆的 for 循环了!Java 8 中的 Stream 轻松遍历树形结构,是真的牛逼!

可能平常会遇到一些需求&#xff0c;比如构建菜单&#xff0c;构建树形结构&#xff0c;数据库一般就使用父id来表示&#xff0c;为了降低数据库的查询压力&#xff0c;我们可以使用Java8中的Stream流一次性把数据查出来&#xff0c;然后通过流式处理。 我们一起来看看&#x…

软件测试面试中90%会遇到的问题,面试前刷提高百分之60的通过率

面试的时候&#xff0c;遇到这样的提问&#xff0c;很多人的都会感觉脑子一下一片空白&#xff0c;或者星星点点&#xff0c;不知道从何说起。 一方面不知道面试官问这个问题的意图是什么&#xff1f;也不知道他想得到的答案是什么&#xff1f; 更加不知道该从哪些方面来回答…

机器学习——损失函数

【说明】文章内容来自《机器学习——基于sklearn》&#xff0c;用于学习记录。若有争议联系删除。 1、简介 损失函数(loss function)又称为误差函数(error function)&#xff0c;是衡量模型好坏的标准&#xff0c;用于估量模型的预测值与真实值的不一致程度&#xff0c;是一个…

大数据Doris(四十二):使用物化视图

文章目录 使用物化视图 一、​​​​​​​创建物化视图

vue3-富文本编辑器(vue-quill)

官网&#xff1a;VueQuill | Rich Text Editor Component for Vue 3 安装 pnpm add vueup/vue-quilllatest 使用 局部使用 先导包 import { QuillEditor } from vueup/vue-quill import vueup/vue-quill/dist/vue-quill.snow.css; 再使用 <QuillEditor theme"snow…

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

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

免费代理IP:如何获取?有什么风险?有什么性价比高的代理IP?

您可能已经知道&#xff0c;生活中没有什么是真正免费的。代理IP虽然用于保护隐私&#xff0c;但也有非常多代理都是免费的&#xff0c;这对于不想使用付费替代方案的用户来说是一个巨大的优势。在这篇博文中&#xff0c;我们将深入研究免费代理的细节&#xff0c;并评估这把双…

3DMAX 中的 VR 渲染器如何设置局部区域渲染?

3DMAX 中的 VR 渲染器如何设置局部渲染&#xff1f; 首先我们要得打开渲染设置&#xff0c;在3damx里按F10&#xff0c;调出渲染设置。选定渲染器为Vary渲染器&#xff1a; 设置VR的局部渲染&#xff0c;需要打开帧缓冲&#xff0c;我们在V-ary项下&#xff0c;打开帧缓冲(点击…

【C语言】初识C语言

本章节主要目的是基本了解C语言的基础知识&#xff0c;对C语言有一个大概的认识。 什么是C语言 在日常生活中&#xff0c;语言就是一种人与人之间沟通的工具&#xff0c;像汉语&#xff0c;英语&#xff0c;法语……等。而人与计算机之间交流沟通的工具则被称为计算机语言&am…

Android Security PIN 相关代码

开发项目遇到一个问题&#xff0c;具体描述及复制步骤如下&#xff1a; 就是开启"Enhanced PIN privacy"(增强的PIN隐私)的时候输入秘密的时候还是会显示数字 如下图&#xff0c;应该是直接是“.” 不应该出现PIN 密码 想要的效果如下图&#xff1a; 设置的步骤如下图…

给零基础朋友的编程课08 - 代码

给零基础朋友的编程课08 - 旋转、圆弧、初识模块化编程。_哔哩哔哩_bilibili Code: / // 彩色案例 艺术仿制品3 // /// 色表 // // 奶白 215,214,160 // 金黄 187,176,112 // 赭石 96,56,20 // 橙色 218,114,53// 项目设定 size(1000,1000); background(215,214,160); stroke…

C++学习实践(一)高频面试问题总结(附详细答案)

文章目录 一、基础常见面试题1、数组和链表区别2、深拷贝和浅拷贝相关问题的区别3、a和a区别4、c内存模型5、四种强制转换和应用场景 二、指针相关1、指针和引用的区别2、函数指针和指针函数3、传指针、引用和值4、常量指针和指针常量5、野指针6、智能指针的用法 三、关键字作用…

Python跳动的爱心完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…

Python 小程序之动态二位数组

动态二位数组 文章目录 动态二位数组前言一、基本内容二、代码编写三、效果展示 前言 没想出啥好点子&#xff0c;这次就给大家写个小程序&#xff0c;动态二维数组吧。 一、基本内容 程序画一个二维的方格&#xff0c;然后里面填上1-10的随机数&#xff0c;每隔一秒更新新一…

喜讯,思迈特签约南方电网搭建云景数字化运营管控平台

近日&#xff0c;思迈特软件签约南方电网共同搭建云景数字化运营管控平台。 Smartbi将助力云景平台构建“全域协同&#xff0c;全员参与、全员创新”的数字化运营新生态。该平台以“工具数据”赋能基层&#xff0c;充分释放基层“业务人员数字化人员”专业能力&#xff0c;实现…

w4操作系统之windows上创建隐藏用户

隐藏用户–在windows上创建隐藏用户 1.首先查看现有哪些用户。&#xff08;通过net user 命令&#xff09; 2.然后创建隐藏用户&#xff08;net user client$ 123 /add&#xff09; 此时出现报错信息。原因是登录用户没权限。需要用管理员的权限 3.用管理员身份运行cmd&am…

BT321F蓝牙音频主机发射连接TWS耳机回连和主动连接的说明

一、功能简介 很多蓝牙耳机的展架应用&#xff0c;需要蓝牙发射模块&#xff0c;输入音频发送给蓝牙耳机 在蓝牙发射方案BT321F的基础上&#xff0c;增加被TWS耳机或者其他蓝牙耳机回连的应用 解决很多的头戴蓝牙耳机&#xff0c;或者TWS无线蓝牙耳机&#xff0c;每次都要进…