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

Python——字符串的基本操作

⼀、 创建

s1 = 'lenovo'
s2 = "QF"
s3 = """hello lenovo"""
s4 = '''hello 亮'''
s5 = """hello
shark
"""
s6 = '''hello
world'''

⼆、简单使⽤

        1.\ 转义符 

testimony = 'This shirt doesn\'t fit me'
words = 'hello \nshark'

        2.+ 拼接 

In [1]: file_name= "成功的21个信念"In [2]: suffix = '.txt'In [3]: file_name = file_name + suffixIn [4]: file_name
Out[4]: '成功的21个信念.txt'

        拼接只能是 字符串和字符串进⾏操作,不可以⽤ 字符串和 ⼀个字符串类型的对象相加

        3.* 复制

In [6]: "-" * 10
Out[6]: '----------'In [7]: print('*' * 10)
**********

三、取值和切⽚

        1.字符串 是 Python 中的⼀个 序列类型的数据结构

        存放的数据,在其内是有序的。

        序列类型的特点:

  •         序列⾥的每个数据被称为序列的⼀个元素
  •         元素在序列⾥都是有个⾃⼰的位置的,这个位置被称为索引或者叫偏移量,也有叫下标的, 从 0 开始,从左到右依次递增
  •         序列中的每⼀个元素可以通过这个元素的索引来获取到
  •         获取到序列类型数据中的多个元素需要⽤切⽚的操作来获取

        2.通过索引取值,获取单个元素

In [10]: s1 = "shark"In [11]: s1[0]
Out[11]: 's'In [12]: s1[-1]
Out[12]: 'k'In [13]: s1[3]
Out[13]: 'r

        3. 切⽚,获取多个元素

[start:end:step]分片
#start 永远是起始索引号
#end   永远是终止索引号
#step  是可选的步长
  •         分片操作只包含位于起始索引号位置的元素
  •         不包含位于终止索引号的位置的元素
  •         同时,起始和终止的意义都是针对于从左向右的顺序来定义的 

        1.⼀般操作 

# 使⽤切⽚获取多个元素
In [15]: s1[0:3]
Out[15]: 'sha'# 起始和结尾的索引号可以省略
In [16]: s1[:3]
Out[16]: 'sha'In [17]: s1[1:]
Out[17]: 'hark'# 索引可以使⽤ 负数
In [18]: s1[2:-1]
Out[18]: 'ar'

        2.使⽤步⻓ 

  •         步⻓就是每数⼏个取⼀个的意思
  •         步⻓是正数时,是从左向右开始操作
  •         步⻓是负数时,是从右向左操作
In [19]: s2 = 'abcdefg'In [20]: s2[::2]
Out[20]: 'aceg'In [21]: s2[::-1]
Out[21]: 'gfedcba'In [22]: s2[::-2]
Out[22]: 'geca'

四、字符串⽅法

        1.统计序列数据的⻓度 

        就是获取⼀个序列数据的元素个数,这个适⽤于所有的序列类型的数据,⽐如 字符串、列表、元组。

# 获取字符串的⻓度,包含空格和换⾏符
In [25]: s3 = "a \n\t"In [26]: len(s3)
Out[26]: 4
  •         \n 是⼀个换⾏符
  •          \t 是⼀个 Tab 键 

        2.in 成员判断 

In [39]: line = 'Size: 8192 MB'In [40]: if 'Size' in line:...: print(line)...:Size: 8192 MB

        注意: 空的字符串总是被视为任何其他字符串的⼦串,因此"" in "abc" 将返回 True。

        3.strip() 去除字符串两端的空⽩字符(空格、\t、 \n)

Out[41]: line = ' Size: 8192 MB'In [42]: line.strip()
Out[42]: 'Size: 8192 MB'

        4.split() 分割 

        默认使⽤空⽩字符作为分隔符(空格、\t、 \n) 和 shell 中的 awk ⼀样道理

In [47]: line
Out[47]: ' Size: 8192 MB'In [48]: line.split()
Out[48]: ['Size:', '8192', 'MB']In [49]: s
Out[49]: '\tab\n'In [50]: s.split()
Out[50]: ['ab']可以指定分隔符
In [51]: line.split(':')
Out[51]: [' Size', ' 8192 MB']In [52]: line.split(': ')
Out[52]: [' Size', '8192 MB']

        5.strip() 移除字符串两端的空⽩字符** 

In [71]: line = ' Size: 8192 MB'In [72]: line.strip()
Out[72]: 'Size: 8192 MB'strip() 返回的是字符串,所以可以连续操作
In [73]: line.strip().split(': ')
Out[73]: ['Size', '8192 MB']In [74]: line
Out[74]: ' Size: 8192 MB'In [75]: k, v = line.strip().split(': ')In [76]: k
Out[76]: 'Size'In [77]: v
Out[77]: '8192 MB'

        6.replace() 替换 

In [65]: line = '  <strong>10、命运在⾃⼰⼿⾥,⽽不是在别⼈的嘴⾥</strong></p>'In [66]: line.strip() ## 先去除两端空⽩字符
Out[66]: '<strong>10、命运在⾃⼰⼿⾥,⽽不是在别⼈的嘴⾥</strong></p>'In [67]: line.strip().replace('strong>', '') ##将字符串 strong> 替换为空
Out[67]: '<10、命运在⾃⼰⼿⾥,⽽不是在别⼈的嘴⾥</</p>'In [68]: line.strip().replace('strong>', '')[1:-6]
Out[68]: '10、命运在⾃⼰⼿⾥,⽽不是在别⼈的嘴⾥'

        7.startswith() 判断字符串以什么为开头 

In [85]: line = 'Locator: DIMM_A2'In [86]: line.startswith("Locator:")
Out[86]: True

        8.endswith() 判断字符串以什么为结尾 

In [87]: line = 'Size: 8192 MB'In [88]: line.endswith('MB')
Out[88]: True

五、 字符串的判断

In [1]: s = '123'In [2]: s.isdigit() # 判断是否是纯数字
Out[2]: TrueIn [3]: s1 = '123adb' In [4]: s1.isalnum() # 判断是否是数字和字⺟
Out[4]: TrueIn [5]: s2 = 'adb'In [6]: s2.isalpha() # 判断是否是纯字⺟
Out[6]: TrueIn [7]: s2.encode() # 转换为⼆进制 bytes 类型
Out[7]: b'adb'In [8]: s4 = "亮"
In [9]: s4.encode() # 转换为⼆进制 bytes 类型,默认编码 utf-8
Out[9]: b'\xe4\xba\xae'In [16]: b = s4.encode()In [17]: b.hex() # bytes 转换成 16 进制
Out[17]: 'e4baae'In [18]: b.decode() # bytes 转换成 str,默认编码utf-8
Out[18]: '亮'

 

 

 

 

 

 

相关文章:

  • 常用的目标跟踪有哪些
  • 【C语言】linux内核ipoib模块 - ipoib_start_xmit
  • phpStorm 设置终端为git bash
  • 力扣白嫖日记(sql)
  • 【Linux】基本指令
  • 解决el-radio-group只触发一次的问题
  • 【信号与系统】(1)连续和离散表示
  • 算法训练营Day37(贪心6)
  • css3+javaScript实现一个左右钟摆-摇晃的红灯笼网页特效
  • RabbitMQ入门篇【图文并茂,超级详细】
  • 【办公类-19-02-01】20240119统计班级幼儿姓名的长度、汉字重复、拼音重复(有无声调)Python
  • STM32(--001) Win10、Win11 上的驱动安装说明
  • AEB滤镜再破碎,安全焦虑「解不开」?
  • 大数据小白初探HDFS从零到入门(一)
  • 上海智慧岛大数据云计算中心项目正式封顶!
  • Angular 响应式表单 基础例子
  • C++类的相互关联
  • css属性的继承、初识值、计算值、当前值、应用值
  • gf框架之分页模块(五) - 自定义分页
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mongodb--安装和初步使用教程
  • Vim 折腾记
  • 目录与文件属性:编写ls
  • 前端技术周刊 2019-01-14:客户端存储
  • 使用putty远程连接linux
  • 小程序 setData 学问多
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 【干货分享】dos命令大全
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (二)PySpark3:SparkSQL编程
  • (五)c52学习之旅-静态数码管
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (译) 函数式 JS #1:简介
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET Micro Framework初体验(二)
  • .Net mvc总结
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .Net面试题4
  • .net中生成excel后调整宽度
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • [BUUCTF 2018]Online Tool
  • [C/C++]关于C++11中的std::move和std::forward
  • [C++]——带你学习类和对象
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解
  • [GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练
  • [LeetBook]【学习日记】获取子字符串 + 颠倒子字符串顺序
  • [Linux]进程信号(信号入门 | 信号产生的方式 | 信号捕捉初识)
  • [Markdown] 02 简单应用 第二弹
  • [NOI2020统一省选 A] 组合数问题 (推式子)