目录
1.find()、rfind()、index()、rindex()、count()
2.split()、rsplit()、partition()、rpartition()
4.lower()、upper()、capitalize()、title()、swapcase()
5.replace()、maketrans()、translate()
8.isalnum()、isalpha()、isdigit()、isspace()、isupper()、islower()
(4)【例7-2】检测用户输入中是否有不允许的敏感字词,如果有就提示非法,否则提示正常
(5)【例7-3】测试用户输入中是否有敏感词,如果有的话就把敏感词替换成三个星号***
1.【例7-5】使用string模块提供的字符串常量,模拟生成指定长度的随机密码
1.【例7-6】编写函数实现字符串加密和解密,循环使用指定密钥,采用简单的异或算法
前言
- 了解ASCII、UTF-8、GBK、CP936等常见字符编码格式
- 了解转义字符和原始字符的概念和用法
- 掌握字符串格式化方法format()的用法
- 熟练运用字符串常用方法
- 熟练运用运算符和内置函数对字符串的操作
一、字符串简介
- 在python中,字符串属于不可变有序序列,使用单引号、双引号、三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套。例如:'abc'、'123'、'中国';"python";'''Tom said,"Let's go." '''
- 除了支持序列通用方法(包括双向索引、比较大小、计算长度、元素访问、切片、成员测试等操作)以外,字符串类型还支持一些特有的操作方法,例如字符串格式化、查找、替换、排版等
- 字符串属于不可变序列,不能直接对字符串对象进行元素增加、修改和删除等操作,切片操作也只能访问其中的元素而无法使用切片来修改字符串中的字符
二、字符串编码
- 最早的字符串编码是美国标准信息交换码ASCII,仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他字符进行了编码。ASCII码采用1个字节(用8位二进制数来表示一个字节)来对字符进行编码,最多只能表示256个符号
- Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案ASCII的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理要求。1990年开始研发,1994年正式公布
- GB2312是我国制定的中文编码,使用1个字节表示英语,2个字节表示中文;GBK是GB2312的扩充,而CP936是微软在GBK基础上开发的编码方式。GB2312、GBK和CP936都是使用2个字节表示中文
- UTF-8是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创键。UTF-8对全国所有国家需要用到的字符进行了编码,以1个字节表示英语字符(兼容ASCII),以3个字节表示中文,还有些语言的符号使用2个字节(例如俄语和希腊语符号)或4个字节
- 不同编码格式之间相差很大,采用不同的编码格式意味着不同的表示和存储形式,把同一字符存入文件时,写入的内容可能会不同,在试图理解其内容时必须了解编码规则并进行正确的解码。如果解码方法不正确就无法还原信息,从这个角度来讲,字符串编码也具有加密的效果
- python 3.x完全支持中文字符,默认使用UTF-8编码格式,无论是一个数字、英文字母,还是一个汉字,在统计字符串长度时都按一个字符对待和处理
>>> s='中国山东烟台' >>> len(s) 6 >>> s='山东烟台ABSIHU' >>> len(s) 10 >>> 姓名='张三' #使用中文作为变量名,一般不用 >>> print(姓名) 张三
三、转义字符
1.表格
转义字符 | 含义 |
\b | 退格,把光标移动到前一列位置 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 一个斜线\ |
\' | 单引号 |
\\" | 双引号 |
\ooo | 3位八进制数对应的字符 |
\xhh | 2位十六进制数对应的字符 |
\uhhhh | 4位十六进制数表示的Unicode字符 |
2.转义字符用法
- 为了避免对字符串中的转义字符进行转义,可以使用原始字符串,在字符串前面加上字母r或R表示原始字符,其中的所有字符都表示原始的含义而不会进行任何转义
>>> print('Hello\nworld') #包含转义字符的字符串
Hello
world
>>> print('\101') #三位八进制数对应的字符,相当于print(chr(65))
A
>>> print('\x41') #两位十六进制数对应的字符,相当于print(chr(65))
A
>>> hex(ord("胡"))
'0x80e1'
>>> hex(ord("歌"))
...
'0x6b4c'
>>> print('我是\u80e1\u6b4c') #四位十六进制数表示Unicode字符
...
我是胡歌
>>> path='C:\Windows\notepad.exe'
>>> print(path) #字符\n被转义位换行符
C:\Windows
otepad.exe
>>> path=r'C:\Windows\notepad.exe' #原始字符串,任何字符都不转义
>>> print(path)
C:\Windows\notepad.exe
>>> path=R'C:\Windows\notepad.exe'
>>> print(path)
C:\Windows\notepad.exe
四、字符串格式化
1.使用%运算符进行格式化
常用格式字符 | |
格式字符 | 说明 |
%s | 字符串(采用str()的显示) |
%r | 字符串(采用repr()的显示) |
%c | 单个字符 |
%d | 十进制整数 |
%i | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%e | 指数(基底写为e) |
%E | 指数(基地写为E) |
%f,%F | 浮点数 |
%g | 指数(e)或浮点数(根据显示长度) |
%G | 指数(E)或浮点数(根据显示长度) |
%% | 一个字符"%" |
>>> x=12345
>>>so="%o"%x #将对象x格式化为八进制字符串
>>> so
'30071'
>>> sh="%x"%x #把对象格式化为十六进制字符串
>>> sh
'3039'
>>> se="%e"%x #把对象格式化为以e为底的指数字符串
>>> se
'1.234500e+04'
>>> chr(ord("3")+1) #讲字符串“3”转为Unicode码加1后再转回对应字符
'4'
>>> "%s"%65 #将整数65格式化为字符串‘65’
'65'
>>> ord('3')
51
>>> chr(52)
'4'
>>> type("%o"%x)
<class 'str'>
>>> "%d"%"555" #只有整数才能格式化为%d、%o、%x等形式
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
"%d"%"555"
TypeError: %d format: a real number is required, not str
2.使用format方法进行格式化
基本使用格式:
<模板字符串>.format(<逗号分隔的参数>)
- 调用format()方法后会返回一个新的字符串,参数序号从0开始编号
- <模板字符串>中有槽{}及格式控制信息
- 槽的内部样式如下
{[name][:][fill][align][sign][#][0][width][,][.precision][type]}
- name:数字(占位),