目录

1. 转义字符

2. 字符串格式化

3. 序列相关方法

4. 大小写相关方法

5. 查找、替换相关方法

6. 分割、连接方法


1. 转义字符

在字符串中可以使用反斜线进行转义;如果字符串本身包含反斜线,则需要使用 “\\” 表示,“\\” 就是转义字符。

s = 'Hello\n\world'
print(s)

2. 字符串格式化

Python 提供了“%”对各种类型的数据进行格式化输出

# 实例代码
price = 123
print("The book's price  is %s" % price)

这行代码中的print 函数包含三个部分,第一部分是格式化字符串(它相当于字符串模板),该格式化字符串中包含一个“ %s ”占位符,它会被第三部分的变量或表达式的值代替; 第二部分固定使用“%”作为分隔符。

格式化字符串中的“ %s ”被称为转换说明符( Conversion Specifier ),其作用相当于一个占位符, 它会被后面的变量或表达式的值代替。“ %s '’指定将变量或值使用str() 函数转换为字符串。

如果格式化字符串中包含多个“ %s ”占位符,第三部分也应该对应地提供多个变量,并且使用圆括号将这些变量括起来.

在默认情况下, 转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python 也允许在最小宽度之前添加一个标志来改变这种行为, Python 支持如下标志。

  • : 指定左对齐。
  • : 表示数值总要带着符号(正数带“+” ,负数带“ _,, )。
  • :表示不补充空格, 而是补充0 。

对于转换浮点数, Python 还允许指定小数点后的数字位数:如果转换的是字符串, Python 允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用点( . )隔开。

price = 108
print("the book's price is %x" % price)
user = "Charli"
age = 8
# 格式化字符串有两个占位符,第三部分提供2个变量
print("%s is a %s years old boy" % (user , age))
num = -28
print("num is: %6i" % num)
print("num is: %6d" % num)
print("num is: %6o" % num)
print("num is: %6x" % num)
print("num is: %6X" % num)
print("num is: %6s" % num)
num2 = 30
# 最小宽度为0,左边补0
print("num2 is: %06d" % num2)
# 最小宽度为6,左边补0,总带上符号
print("num2 is: %+06d" % num2)
# 最小宽度为6,右对齐
print("num2 is: %-6d" % num2)
my_value = 3.001415926535
# 最小宽度为8,小数点后保留3位
print("my_value is: %8.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0
print("my_value is: %08.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0,始终带符号
print("my_value is: %+08.3f" % my_value)
the_name = "Charlie"
# 只保留3个字符
print("the name is: %.3s" % the_name) # 输出Cha
# 只保留2个字符,最小宽度10
print("the name is: %10.2s" % the_name)

3. 序列相关方法

字符串本质上就是由多个字符组成的,因此程序允许通过索引来操作字符。

Python 字符串直接在方括号( [])中使用索引即可获取对应的字符, 字符串中第一个字符的索引为0 、第二个字符的索引为1,后面各字符依此类推。此外, Python 也允许从后面开始计算索引,最后一个字符的索引为-1,倒数第二个字符的索引为-2······依此类推。

除可获取单个字符之外,也可在方括号中使用范围来获取字符串的中间“一段”(被称为子串)。

允许省略起始索引或结束索引。如果省略起始索引,相当于从字符串开始处开始截取;如果省略结束索引,相当于截取到字符串的结束处。

Python 字符串还支持用in 运算符判断是否包含某个子串

如果要获取字符串的长度,则可调用Python 内置的len()函

使用全局内置的min()和max()函数获取字符串中最小字符和最大字符

s = 'crazyit.org is very good'
# 获取s中索引2处的字符
print(s[2]) # 输出a
# 获取s中从右边开始,索引4处的字符
print(s[-4]) # 输出g
# 获取s中从索引3处到索引5处(不包含)的子串
print(s[3: 5]) # 输出zy
# 获取s中从索引3处到倒数第5个字符的子串
print(s[3: -5]) # 输出zyit.org is very
# 获取s中从倒数第6个字符到倒数第3个字符的子串
print(s[-6: -3]) # 输出y g
# 获取s中从索引5处到结束的子串
print(s[5: ]) # 输出it.org is very good
# 获取s中从倒数第6个字符到结束的子串
print(s[-6: ]) # 输出y good
# 获取s中从开始到索引5处的子串
print(s[: 5]) # 输出crazy
# 获取s中从开始到倒数第6个字符的子串
print(s[: -6]) #输出crazyit.org is ver
# 判断s是否包含'very'子串
print('very' in s) # True
print('fkit' in s) # False
# 输出s的长度
print(len(s)) # 24
# 输出'test'的长度
print(len('test')) # 4
# 输出s字符串中最大的字符
print(max(s)) # z
# 输出s字符串中最大的字符
print(min(s)) # 空格

4. 大小写相关方法

Python 是“自带文档”的。此处需要读者简单掌握两个帮助函数。

  • dir() : 列出指定类或模块包含的全部内容(包括函数、方法、类、变量等)。
  • help() : 查看某个函数或方法的帮助文档。

a = 'our domain is crazyit.org'
# 每个单词首字母大写
print(a.title())
# 每个单词首字母小写
print(a.lower())
# 每个单词首字母大写
print(a.upper())

5. 删除空白

str 还提供了如下常用的方法来删除空白。

  • strip () :  删除字符串前后的空白。
  • lstrip() :   删除字符串前面(左边)的空白。
  • rstrip () : 删除字符串后面(右边)的空白。

需要说明的是, Python 的str 是不可变的(不可变的意思是指,字符串一旦形成,它所包含的字符序列就不能发生任何改变),因此这三个方法只是返回字符串前面或后面空白被删除之后的副本, 并没有真正改变字符串本身。

lstrip () 方法默认删除字符串左边的空白,但如果为该方法传入指定参数,则可删除该字符串左边的指定字符。

s = '  this is a puppy  '
# 删除左边的空白
print(s.lstrip())
# 删除右边的空白
print(s.rstrip())
# 删除两边的空白
print(s.strip())
# 再次输出s,将会看到s并没有改变
print(s)
s2 = 'i think it is a scarecrow'
# 删除左边的i、t、o、w字符
print(s2.lstrip('itow'))
# 删除右边的i、t、o、w字符
print(s2.rstrip('itow'))
# 删除两边的i、t、o、w字符
print(s2.strip('itow'))

5. 查找、替换相关方法

str 还提供了如下常用的执行查找、替换等操作的方法。

  • startswith():判断字符串是否以指定子串开头。
  • endswith ():判断字符串是否以指定子串结尾。
  • find (): 查找指定子串在字符串中出现的位置,如果没有找到指定子串,则返回- I 。
  • index () : 查找指定子串在字符串中出现的位置,如果没有找到指定子串,则引发ValueError错误。
  • replace(): 使用指定子串替换字符串中的目标子串。
  • translate (): 使用指定的翻译映射表对字符串执行替换。
s = 'crazyit.org is a good site'
# 判断s是否以crazyit开头
print(s.startswith('crazyit'))
# 判断s是否以site结尾
print(s.endswith('site'))
# 查找s中'org'的出现位置
print(s.find('org')) # 8
# 查找s中'org'的出现位置
print(s.index('org')) # 8
# 从索引为9处开始查找'org'的出现位置
#print(s.find('org', 9)) # -1
# 从索引为9处开始查找'org'的出现位置
# print(s.index('org', 9)) # 引发错误
# 将字符串中所有it替换成xxxx
print(s.replace('it', 'xxxx'))
# 将字符串中1个it替换成xxxx
print(s.replace('it', 'xxxx', 1))
# 定义替换表:97(a)->945(α),98(b)->945(β),116(t)->964(τ),
table = {97: 945, 98: 946, 116: 964}
print(s.translate(table)) # crαzyit.org is α good site

从上面程序可以看出, str 的trans l a te ()方法需要根据翻译映射表对字符串进行查找、替换。在上面程序中我们自己定义了一个翻译映射表,这种方式需要开发者能记住所有字符的编码,这显然不太可能。为此, Pyth on 为由类提供了一个maketra ns()方法,通过该方法可以非常方便地创建翻译映射表。

假如定义a -> 1 、b ->2、c->3 的映射, 程序只要将需要映射的所有字符作为maketrans () 方法的第一个参数,将所有映射的目标字符作为maketrans () 方法的第二个参数即可。

6. 分割、连接方法

Python 还为str 提供了分割和连接方法。

  • split(): 将字符串按指定分割符分割成多个短语。
  • join ():将多个短语连接成字符串。

str 的split()和join () 方法互为逆操作一 split () 方法用于将字符串分割成多个短语:而join () 方法则用于将多个短语连接成字符串。

s = 'crazyit.org is a good site'
# 使用空白对字符串进行分割
print(s.split()) # 输出 ['crazyit.org', 'is', 'a', 'good', 'site']
# 使用空白对字符串进行分割,最多只分割前2个单词
print(s.split(None, 2)) # 输出 ['crazyit.org', 'is', 'a good site']
# 使用点进行分割
print(s.split('.')) # 输出 ['crazyit', 'org is a good site']
mylist = s.split()
# 使用'/'为分割符,将mylist连接成字符串
print('/'.join(mylist)) # 输出 crazyit.org/is/a/good/site
# 使用','为分割符,将mylist连接成字符串
print(','.join(mylist)) # 输出 crazyit.org,is,a,good,site

疯狂Python讲义之变量和简单类型--深入使用字符串笔记4相关推荐

  1. python中︿是什么意思_Python learning notes-0003-注释、变量、简单类型、运算符,学习,笔记...

    一.注释 1.单行注释使用# 2.多行注释使用三个单引号或三个双引号'''注释'''或"""注释""" 在python的*.py文件中可以直 ...

  2. 疯狂Python讲义学习日志01——变量和简单类型

    1.变量和简单类型 1.1python脚本注释 python提供了两种脚本注释的方式: 当行脚本的注释: 对于单行的python的脚本而言,可以在该行脚本所在的左侧添加"#"字符的 ...

  3. python中的变量是动态类型的什么意思_Python零基础入门(一):对Python的简单认识...

    点击蓝字 关注浅韵 一起划水 写在前面 期末考试告一段落之后,这个公众号又活了. 漫长的假期,想玩也是肯定的,但是发现自己想学的东西也很多,想写的东西也很多,所以给自己来了一个假期整活计划. 在这个假 ...

  4. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF 含源码工具版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python编程.Python语法方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小124.3 MB,李刚编写,目前豆瓣.亚 ...

  5. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码

    内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...

  6. 疯狂python讲义学习笔记——中十章完结

    #第十一章 thinker import tkinter as tk print(help(tk.Button.__init__))#以按扭为例查看有什么属性 class myApplication( ...

  7. 李刚 疯狂Python讲义 读书笔记

    疯狂Python讲义 李刚 这不一定是最好的python入门书,我买它纯粹是因为遇到公众号的推销.对入门教材不需要太纠结,基础知识部分大家都是互相借鉴的,买最近出版的就行. 我是经历了很长时间的碎片化 ...

  8. 疯狂Python讲义学习笔记(含习题)之 常见模块

    一.sys模块 sys模块代表了Python解释器,主要用于获取和Python解释器相关的信息. >>> import sys >>> [e for e in di ...

  9. 疯狂Python讲义学习笔记(含习题)之 类和对象

    Python支持面向对象的三大特征:封装.继承和多态. 一.类和对象 可以把类当成一种自定义类型,可以使用类来定义变量,也可以使用类来创建对象. (一)定义类 类是某一批对象的抽象,可以把类理解成某种 ...

最新文章

  1. Exception loading sessions from persistent storage
  2. Spring Boot 添加拦截器的配置方式
  3. openresty luarocks 安装以及openssl 问题处理
  4. iPhone OS框架 介绍
  5. 404页面自动跳转javascript
  6. 使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务
  7. CA与数字证书的自结
  8. 动手学深度学习Pytorch Task06
  9. 病历管理系统设计与实现
  10. 英文站变现赚美金的7种方式
  11. 【网络编程--UDP、TCP】
  12. 樊登读书会-《关键对话》
  13. Problem H. Curious (莫比乌斯反演)
  14. IDA7.0提示Oops! internal error 1491 occured.解决办法
  15. Kafka之sync、async以及oneway
  16. 复习整合Mysql指令操作
  17. 程序员的密码管理之道
  18. 申请CVE的姿势总结
  19. i512500h和r76800hs对比 i5 12500h和r7 6800hs选哪个好
  20. 一种简单、安全的Dota全图新思路 作者:LC

热门文章

  1. 判断点在线段的左边还是右边 判断线段是否相交
  2. 基于STM32的超声波雷达项目【可拟合构建平面地图】(代码开源)
  3. jvm原理解析——不疯魔不成活 1
  4. mysql事务锁死_mysql事务里锁死
  5. Matlab配平操作trim
  6. 计算机考研数学难,考研数学一考那些内容数一是不是最难的
  7. 阿里云easy-excel的使用(springboot整合)
  8. 时间序列模型R语言实现-批量建模,预测(ARIMA, 随机森林)
  9. windows下用cmd切换目录
  10. 【题目】NKOJ-4247 老蒋的数列