文章目录

  • 了解ASCII码
  • UTF-8编码
  • 字符串构造
    • 单引号或双引号构造字符串
    • 单双引号构造字符串的特殊用法
    • 字符串中引号的转义
    • 转义字符
    • 原始字符串
    • 三重引号字符
  • 字符串格式化
    • %符号格式化字符串
      • 字符串格式化的一般形式
      • 常用字符串的含义
      • 最小宽度和精度
      • 进位制和科学计数法
  • format()方法格式化字符串
  • 字符串截取(类比列表)
  • 字符串常用内置函数
    • 1. len()
    • 2. ord()
    • 3. chr()
    • 4. max()
    • 5. min()
    • 6. center()、ljust()、rjust()
    • 7. lower()、upper()
    • 8. capitalize()、title()、swapcase()
    • 9. islower()、isupper()、isdigit()
    • 10. find()、rfind()
    • 11. index()、rindex()
    • 12. count()
    • 13. split()
    • 14. join()
    • 15. replace()
    • 16. maketrans()、translate()
    • 17. strip(self, chars=None, /)
  • 正则表达式
    • 一些常用的正则表达式元字符
      • 1. “.”:表示除换行符以外的任意字符
      • 2. “[]”:指定字符集
      • 3.“ ^ ”:匹配行首,匹配以^后面的字符==开头==的字符串
      • 4.“ $ ”:匹配行尾,匹配以$之前的字符结束的字符串
      • 5.“\”:反斜杠后面可以加不同的字符以表示不同的特殊意义
      • 6.“ * ”:匹配位于*之前的字符或子模式的0次或多次出现
      • 7.“+”:匹配位于+之前的字符或子模式的1次或多次出现
      • 8.“?”:匹配位于?之前的0个或1个字符
      • 9.“{m,n}”:表示至少有m个重复,至多有n个重复。m,n均为十进制数

了解ASCII码

  • ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
  • ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的最高位为二进制0)来表示所有的大写和小写字母、数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。128 到255为扩展ASCII码。

UTF-8编码

  • UTF-8编码是“可变长编码”,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8编码以一个字节表示英语字符(兼容ASCII),以3个字节表示中文,还有一些语言使用2个字节或4个字节。
  • Python3.x完全支持中文字符,解析器默认采用 UTF-8解析源程序,无论是数字字符、英文字母、汉字都按一个字符来对待和处理。

字符串构造

  • 在Python中字符串的构造,主要通过两种方法来实现,一是使用str函数,二是用单引号、双引号或三引号。在Python中,使用引号是一种非常便捷的构造字符串方式。

单引号或双引号构造字符串

  • 在用单引号或双引号构造字符串时,要求引号成对出现。
  • 如:‘Python World!’、‘ABC’、“what is your name?”,都是构造字符串的方法。
  • 'string"在Python中不是一个合法的字符串。

单双引号构造字符串的特殊用法

  • 如果代码中的字符串包含了单引号,且不用转义字符,那么整个字符串就要用双引号来构造,否则就会出错。

  • 如果代码中的字符串包含了双引号,且不用转义字符,那么整个字符串要用单引号来构造。

字符串中引号的转义

  • 上面代码中的反斜线“\”对字符串中的引号进行了转义,表示反斜线后的单引号是字符串中的一个普通字符,而不是字符串构造的边界字符

转义字符

  • 转义字符以“\”开头,后接某些特定的字符或数字。
  • Python中常用的转义字符:

原始字符串

  • 假设在C:\test文件夹中有一个文件夹net,如何输出完整路径呢?可能你想到的是:
  • 怎么会是这样的输出呢?原来字符串中“\t”和“\n”都表示转义字符。
  • 正确的路径如何表示呢?

三重引号字符

  • 三重引号字符串是一种特殊的用法。三重引号将保留所有字符串的格式信息。如字符串跨越多行,行与行之间的回车符、引号、制表符或者其他任何信息,都将保存下来。在三重引号中可以自由的使用单引号和双引号。

字符串格式化

%符号格式化字符串

  • 字符串格式化涉及到两个概念:

    • 格式以%开头,
    • 格式化运算符%表示用对象代替格式串中的格式
  • 最终得到一个字符串。

字符串格式化的一般形式

  • [ ]中的内容可以省略;
  • 简单的格式是%加格式字符,如%f、%d、%c等;
  • 当最小宽度及精度都出现时,它们之间不能有空格,格式字符和其他选项之间也不能有空格,如%8.2f

常用字符串的含义

最小宽度和精度

  • 最小宽度是转换后的值所保留的最小字符个数。
  • 精度(对于数字来说)则是结果中应该包含的小数位数。
  • 一次转换多个对象,这些对象表示成一个元组形式,位置与格式化字符一一对应,%.2f表示3.456727的格式形式,%4d表示89的格式形式,%s表示’Lily’的格式形式,逗号“,”原封不动输出。

进位制和科学计数法

  • 把一个数转换成不同的进位制,也可按科学计数法进行转换。
  • 以上代码表示将十进制数a分别转换为八进制串、十六进制串和科学计数法串。
  • 案例(输出九九乘法表):

format()方法格式化字符串

  • format()方法是通过{}和:来代替传统%方式。
  • format方法格式化时,
  • 可以使用位置参数,根据位置来传递参数;
  • 可以通过索引值来引用位置参数,只要format方法相应位置上有参数值即可,参数索引从0开始;
  • 可以使用序列,通过format方法中序列参数的位置索引和序列中元素索引来引用相应值;
  • 可以用“*序列名称”的形式作为format方法的参数,通过位置依次将序列中的元素传递到目标字符串中。
  • 可以使用关键参数的形式,也可用“**字典名”的形式将字典中的元素作为参数。
  • 上面大括号最前面的0不写也可以。
  • 带’f’前缀,类似于format()方法格式化字符串

字符串截取(类比列表)

  • 字符串的截取就是取出字符串中的子串。截取有两种方法:一种是索引str[index]取出单个字符;另一种是切片str[[start]:[end]:[step]]取出一片字符。切片方式与列表部分介绍的一样。
  • 字符串中字符的索引跟列表一样,可以双向索引。

字符串常用内置函数

1. len()

2. ord()

  • 获取字符的Unicode码

3. chr()

  • 把编码转换为对应的字符

4. max()

5. min()

  • 代码案例(编写程序,输入一个字符串,分别统计大写字母、小写字母、数字以及其他字符的个数,并分别以前面介绍的3种字符串格式化方式分别显示各种字符个数。数字仅包括阿拉伯数字。):
s=input('请输入一个字符串:')
c1,c2,c3,c4=0,0,0,0for i in s:if "A"<=i<="z":c1+=1elif "a"<=i<="z":c2+=1elif"0"<=i<="9":c3+=1else:c4+=1
# 三种打印方式
print("大写字母%d个;小写字母%d个;数字%d个;其他字符%d个。"%(c1,c2,c3,c4))print("大写字母{0}个;小写字母{1}个;数字{2}个;其他字符{3}个。".format(c1,c2,c3,c4))print(f"大写字母{c1}个;小写字母{c2}个;数字{c3}个;其他字符{c4}个。")

6. center()、ljust()、rjust()

  • 格式:

    • center(self, width, fillchar=’ ', /)
    • ljust(self, width, fillchar=’ ', /)
    • rjust(self, width, fillchar=’ ', /)
  • 说明:

    • width:指定宽度;
    • fillchar:填充的字符,默认为空格。
  • 功能:

    • 返回一个宽度为width的新字符串,原字符串居中(左对齐或右对齐)出现在新字符串中,如果width大于字符串长度,则使用fillchar进行填充。
  • 使用format()方法和ljust()方法打印出九九乘法表:

for i in range(1,10):for j in range(1,i+1):print("{0}*{1}={2}".format(i,j,i*j).ljust(8),end="")print()

7. lower()、upper()

  • lower()方法将大写字母转换为小写字母,其他字符不变,并返回新字符串。
  • upper()方法将小写字母转换为大写字母,其他字符不变,并返回新字符串。
  • 代码案例(有一批淘宝用户名"风云Th"、“Brown”、“飘然12345”、“云S”、“thomas”、“青山依旧QSYJ”,编写程序,将这些用户名存储在一个列表中,查找用户名"thomas"是否存在。要求输入的thomas大小写无关,即输入Thomas、THOmas、thoMAs等均能找到):
names=["风云Th","Brown","飘然12345","云S","thomas","青山依旧QSYJ"]name=input("请输入用户名:")for i in names:if name.lower() ==i.lower():print("找到")breakelse:print("未找到")

8. capitalize()、title()、swapcase()

  • capitalize()方法将字符串首字母转换为大写形式,其他字母转换为小写形式。
  • title()方法将每个单词的首字母转换为大写形式,其他部分的字母转换为小写形式。
  • swapcase()字符将大小写互换。均返回新字符串,原字符串对象不做任何修改。

9. islower()、isupper()、isdigit()

  • 功能:测试字符串是否为小写、大写、数字。如果是,则返回True;否则返回False。
  • 小小案例(利用isupper()、islower()、isdigit()分别判断是否为大写字母、小写字母、数字字符,并分别统计三种字符的个数。用字符串格式化方式分别显示三种字符的个数):
s=input('请输入一个字符串:')
c1,c2,c3,c4=0,0,0,0
for i in s:if i.isupper():c1+=1        elif i.islower():c2+=1        elif i.isdigit():c3+=1       else:c4+=1
print(f"大写字母{c1}个;小写字母{c2}个;数字{c3}个;其他字符{c4}个。")

10. find()、rfind()

  • 格式:

    • S.find(sub[, start[, end]])
    • S.rfind(sub[, start[, end]])
  • 说明:

    • sub:字符串(子串);
    • start:开始位置;
    • end:结束位置。查找范围start开始,end结束,不包括end。
  • 功能:

    • 在一个较长的字符串S中,在[start,end)范围内查找并返回子串sub首次出现的位置索引,如果没有找到则返回-1。默认范围是整个字符串。其中find()方法从左往右查找,rfind()方法从右往左查找。

11. index()、rindex()

  • 格式:

    • S.index(sub[, start[, end]])
    • S.rindex(sub[, start[, end]])
  • 功能:
    • 在一个较长的字符串S中,查找并返回在[start,end)范围内子串sub首次出现的位置索引,如果不存在则抛出异常。默认范围是整个字符串。其中index()方法从左往右查找,rindex()方法从右往左查找。

12. count()

  • 格式:S.count(sub[, start[, end]])
  • 功能:在一个较长的字符串S中,查找并返回[start,end)范围内子串sub出现的次数,如果不存在则返回0。默认范围是整个字符串。

13. split()

  • split(self, /, sep=None, maxsplit=-1)
  • 功能:以指定字符为分隔符,从左往右将字符串分割开来,并将分割后的结果组成列表返回。
  • sep表示分割符;maxsplit表示最大分割次数,-1表示不限次数
  • 如果字符串中的某种字符出现0次或多次,可以利用split()方法,根据该字符把字符串分离成多个子串组成的列表。

  • 对于split(),如果不指定分隔符,实际上表示以任何空白字符(包括连续出现的)作为分隔符。空白字符包括空格、换行符、制表符等。
  • 除了split(),还有rsplit(),表示从右往左将字符串分割开来,这两种方法还能指定最大分隔次数。

14. join()

  • join()方法可用来连接序列中的元素,并在两个元素之间插入指定字符,返回一个字符串。
  • join()方法是split()方法的逆方法。

15. replace()

  • replace(old,new,count=-1)方法查找字符串中old子串并用new子串来替换。参数count默认值为-1,表示替换所有匹配项,否则最多替换count次。返回替换后的新字符串

16. maketrans()、translate()

  • maketrans()方法生成字符映射表,translate()方法是根据字符映射表替换字符。这两种方法联合起来使用可以一次替换多个字符。

17. strip(self, chars=None, /)

  • strip()方法去除字符串两侧的空白字符或指定字符,并返回新字符串。
  • 思考:如何去除字符串中间的空格?

正则表达式

  • 正则表达式是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合,组成一个“规则”,检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。正则表达式是字符串处理的有力工具,但是并不是Python独有的,其他语言也有。
  • Python中,re模块提供了正则表达式操作所需要的功能。
  • 大多数字母和字符一般都会和自身匹配。如果在字符串前面加了r,表示对字符串不进行转义。有些字符比较特殊,它们和自身并不匹配,而是表明应和一些特殊的东西匹配,或者会影响重复次数。这些特殊的字符我们称之为元字符
  • re模块中findall()方法以列表的形式返回所有能匹配的子串,如果没有找到匹配的,则返回空列表。

一些常用的正则表达式元字符

1. “.”:表示除换行符以外的任意字符

  • 与“.”类似(但不相同)的一个符号是“\S”,表示不是空白符的任意字符。注意是大写字符S。

2. “[]”:指定字符集

  • 常用来指定一个字符集,例如:[abc]、[a-z]、[0-9];
  • 元字符在方括号中不起作用,例如:[akm$]和[m.]中元字符都不起作用;
  • 方括号内的“ ^ ”表示补集,匹配不在区间范围内的字符,例如:[^3]表示除3以外的字符。

3.“ ^ ”:匹配行首,匹配以^后面的字符开头的字符串

4.“ $ ”:匹配行尾,匹配以$之前的字符结束的字符串

5.“\”:反斜杠后面可以加不同的字符以表示不同的特殊意义

  • \b匹配单词头或单词尾;
  • \B与\b相反,匹配非单词头或单词尾;
  • \d匹配任何十进制数;相当于[0-9]
  • \D与\d相反,匹配任何非数字字符,相当于[^0-9]
  • \s匹配任何空白字符,相当于[\t\n\r\f\v]
  • \S与\s相反,匹配任何非空白字符,相当于[^\t\n\r\f\v]
  • \w匹配任何字母、数字或下画线字符,相当于[a-zA-Z0-9_]
  • \W与\w相反,匹配任何非字母、数字和下画线字符,相当于[^a-zA-Z0-9_]
  • 也可以用于取消所有的元字符:\\\[
  • 这些特殊字符都可以包含在[]中。如:[\s,.]将匹配任何空白字符、“,“或”.”。
  • 正则表达式除了能够匹配不定长的字符集,还能指定正则表达式的一部分的重复次数,所涉及的元字符有“*”、“+”、“?”、“{}”。

6.“ * ”:匹配位于*之前的字符或子模式的0次或多次出现

7.“+”:匹配位于+之前的字符或子模式的1次或多次出现

8.“?”:匹配位于?之前的0个或1个字符

  • 当“?”紧随其他限定符(*、+、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。

9.“{m,n}”:表示至少有m个重复,至多有n个重复。m,n均为十进制数

  • 忽略m表示0个重复,忽略n表示无穷多个重复。
  • {0,}等同于*;{1,}等同于+;{0,1}与?相同。但是如果可以的话,最好使用*、+、或?。

字符串的编码与构造、字符串格式化、字符串的截取、字符串常用函数、正则表达式相关推荐

  1. python 截取字符串6位,python按照指定字符或者长度 截取字符串

    1.截取指定位置字符串 Python字符串可以理解为一个数组,获取某一部分的可以使用 str[beginIndex:endPosition],其中str为需要截取的字符串,beginIndex为需要截 ...

  2. python字符串s最后一个字符的位置是_python截取字符串后几位?

    原标题:python截取字符串后几位? 字符串截取,也叫字符串切片,使用方括号[ ]来截取字符串,在Python中单字符也是作为一个字符串使用. 字符串[开始索引:结束索引:步长] 开始索引:从指定位 ...

  3. gb2312编码在线转换_python基础学习—04字符串与编码

    点击上方蓝字关注我们不迷路! 字符串与编码 一.了解计算机编码 1.1  编码 定义:将信息从一种形式转换为另外一种形式的过程叫做编码,即信息转换过程 举例:信息加密解密.语言翻译 1.2  计算机编 ...

  4. Python 基础系列--字符串与编码

    一旦走上编程这条路,如果不把编码这个问题搞清楚,那么它会像幽灵般纠缠你整个职业生涯. 字符串在编程中是使用频率最高的数据类型,像 web 网站中显示的中英文信息,使用记事本打开一个文本文件所看到的内容 ...

  5. php兼容编码,PHP截取字符串编码(兼容utf-8和gb2312)

    昨天晚上和今天上午看了字符编码的问题,还有一些别人截取字符串的函数,自己也写了一个,兼容utf-8和gb2312的 //截取字符串长度.支持utf-8和gb2312编码.若为gb2312,先将其转为u ...

  6. Python 基础三:基础数据类型和字符串的常用函数操作

    基础数据类型 数字int 数字主要用于计算,有加减乘除等操作,下面介绍一种使用方法 #bit_length(),将十进制数转换成二进制数的二进制数位数 v = 9 data = v.bit_lengt ...

  7. java字符串如何按字符截取_JAVA如何按字节截取字符串

    JAVA如何按字节截取字符串 这篇文章主要介绍了JAVA如何按字节截取字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 public class ...

  8. 截取字符串的几种方式

    一.正则匹配 例子: let  str = 'ycc?name=cc&sex=woman' 截取字符串 name=cc let newStr = str.match(/\?(\S*)& ...

  9. Excel中如何截取字符串中指定字符后的部分字符

    1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示:复制单元 ...

最新文章

  1. python小课骗局-谈谈学风变python小课感想,菜鸟表示真的挺简单
  2. Python itertools 操作迭代对象
  3. 常见加密工具类Base64、DES、AES、RSA、MD5汇总
  4. Scala多特质混入时的执行顺序
  5. java接口方法默认权限_java 接口内定义方法的权限是什么?
  6. httpSession的正确理解
  7. tcmalloc内存分配器分析笔记:基于gperftools-2.4
  8. iOS开发之cocoapods报错问题You need at least git version 1.8.5 to use CocoaPods
  9. 第六届蓝桥杯java b组第一题
  10. 中电信推大学生3G上网套餐
  11. linux内核分析及应用 -- 中断机制
  12. 常见电脑病毒及解决措施
  13. 无人驾驶车辆轨迹跟踪控制文献分享(1)
  14. 如何建立一个快速显示桌面的快捷方式?
  15. 看过的最好的护肤心得 续.
  16. 坚果云WebDav示例
  17. vue+element-ui实现表格编辑
  18. Linux测试系统稳定性的工具,Linux桌面操作系统稳定性测试.pdf
  19. 对于互联网现状的认知与感悟
  20. Moonbeam生态说|Hello! Wormhole

热门文章

  1. 微软技术支持(CSS)冬季实习生面试经验
  2. docker学习(四)docker run用法
  3. ei指什么_EI是什么意思
  4. eac 反调试_一种可能被用于EAC保护的检测调试器方案
  5. 密码学 (cryptography I - Dan Boneh) 【Week 1】Homework
  6. 2023中国(上海)国际食品安全检测仪器展览会
  7. 生鲜 B2B 技术平台的前端团队该如何搭建
  8. 2015浙工大校赛-Problem K: 数圈圈
  9. 什么是服务器和站点,什么是站点
  10. python抓取网站访客手机号_想获得网站访问者的联系方式吗,这篇文章全讲透了...