python - 内置类型 之 序列 - 字符串

目录

一、字符串基础

1.字符串定义

2.字符串运算

3.逻辑与比较运算符

4.字符串访问

5.字符串格式化

6.转义字符

7.字符串常量

8.f-string格式化字符串

二、字符串函数

1.字符串函数目录

2.字符串函数用法


 

序列介绍

  • (1)3种基本序列类型:list、tuple、range(数字序列对象)
  • (2)专门处理文本的附加序列类型:str
  • (3)专门处理二进制数据的附加序列类型: bytes、bytearray、memoryview

 

一、字符串基础

1.字符串定义

str对象称为 字符串。 字符串采用Unicode 编码,为不可变序列

字符串字面值有多种不同的写法:

  • (1)单引号: '允许包含有 "双" 引号' 。例:str='this is string';
  • (2)双引号: "允许包含有 '单' 引号"。 例:name="this is 'python' work";
  • (3)三重引号: '''三重单引号''' 或 name="""this is 'python' work"""

 

2.字符串运算

(1)+ 字符串连接

a='Hello'

b='Python'

c=a + b

#c为'HelloPython'

 

(2)* 重复输出字符串

a * 2

#结果:'HelloHello'

 

(3)[] 通过索引获取字符串中字符

参考 字符串访问

 

(4)[:] 截取字符串中的一部分

参考 字符串访问

 

(5)in 与 not in 成员运算符

"H" in a

"M" not in a

 

(6)r/R 原始字符串,不进行转义

tab=r'\n'

stu=R'jack\tim'

 

(7)% 格式化字符串

参考 字符串格式化

 

3.逻辑与比较运算符

(1)逻辑运算符

  • not:逻辑“非”。如果x为True,则not x为False
  • and:逻辑“与”。如果x为True,且y为True,则x and y为True
  • or:逻辑“或”。如果x、y中至少有一个为True,则x or y为True  

 

(2)比较运算符

  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于
  • ==:等于。比较两个值是否相等。之所以用两个等号,是为了和变量赋值区分开来。
  • !=:不等与
  • x is y:x与y是同一对象
  • x is not y:x与y不是同一对象

 

比较规则为:

  • (1)0-9A-Za-z1字符中,排序在前边的字符比后面的小
  • (2)从第一个字符开始逐个字符比较,若前面的字符相同,则继续比较后面的字符,直接第1对不同的字符比较的结果,后面即使还有字符也不会再作比较
  • (3)当一个字符串全部字符和另一个字符串的前部分字符相同时,长度长的字符串为大

例:

a='aba'

b='acb'

a<b #结果:True

 

4.字符串访问

(1)直接访问字符串中的值, 字符串索引第1位为0

'better man'[4]

 

(2)使用 变量名[n] 的方式,输出字符变量的单个值

name='better man'

n1=name[0]

 

(3)采用 字符串[n1:n2] 方法访问连续多个值

name='better man'[7:10]

当为 字符串[0:n2] 形式时,可省略写成 字符串[:n2]形式

name='better man'

n1=name[:3]

 

(4)循环读取字符串字符

a='abcdefg'

for str in a:print(str)

 

(5)等距截取

(1)seq[start:end:step] start为起始点,end为结束点,step为距长(即每隔step个字符提取)

(2)seq[:n] 等同 seq[0:n]

(3)seq[n:] 等同 seq[n:len(seq)]

 

(6)反向截取

(1)seq[-n]表示截取倒数第n个字符

(2)seq[n1:-n2]表示从(n1-1)个字符截取到倒数第n2个字符

例:

s1='STUDENT'

p1=s1[2:-2]

print(p1) #结果:UDE

p2=s1[-2:]

print(p2) #结果:NT

 

(3)seq[::-1]起到反转字符串的作用

s1='ABC'

p2=s1[::-1]

print(p2) #结果:CBA

 

5.字符串格式化

字符串具有一种特殊的内置操作:使用 % (取模) 运算符。 这也被称为字符串的 格式化 或 插值 运算符。

1.字符串格式化符号:

  • %c  格式化字符及其ASCII码
  • %s  格式化字符串
  • %r 字符串(使用 repr() 转换任何 Python 对象)
  • %a 字符串(使用 ascii() 转换任何 Python 对象)
  • %d  格式化整数
  • %u  格式化无符号整型
  • %o  格式化无符号八进制数
  • %x  格式化无符号十六进制数
  • %X  格式化无符号十六进制数(大写)
  • %f  格式化浮点数字,可指定小数点后的精度
  • %F 浮点十进制格式
  • %e  用科学计数法格式化浮点数
  • %E  作用同%e,用科学计数法格式化浮点数
  • %g  %f和%e的简写
  • %G  %f 和 %E 的简写
  • %p  用十六进制数格式化变量的地址

 

2.格式化操作符辅助指令:

  • * 定义宽度或者小数点精度
  • - 用做左对齐
  • + 在正数前面显示加号( + )
  • <sp> 在正数前面显示空格
  • # 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
  • 0 显示的数字前面填充'0'而不是默认的空格
  • % '%%'输出一个单一的'%'
  • (var) 映射变量(字典参数)
  • m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

 

例:

(1)格式化字符串

print("His name is %s"%("Aviad"))

 

(2)格式化整数

print("He is %d years old"%(25))

 

(3)打印浮点数

print ("His height is %f m"%(1.83))

 

(4)打印浮点数(指定保留小数点位数)

print ("His height is %.2f m"%(1.83))

 

(5)指定占位符宽度

print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))

 

(6)指定占位符宽度(左对齐)

print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))

 

(7)指定占位符(只能用0当占位符?)

print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))

 

(8)科学计数法

print('%.2e'%0.00015) #结果:1.50e-04

 

(9)输出指定位数

import math;

PI = 3.1415926

print("PI = %10.3f" % math.pi) #输出PI = 3.142

print("PI = %-10.3f" % math.pi) #输出PI = 3.142

 

(10)输出指定长度

print("%.3s" %("abcde")) #输出abc

print("%.*s" %(4,"abcde")) #输出abcd

print("%10.3s" %("abcde")) #输出 abc(总长度为10,字符长度不够前面填空格)

print("%3d %0.2f"%(5,1276.2851)) #输出5 1276.28

 

6.转义字符

  • \(在行尾时) 续行符
  • \\ 反斜杠符号
  • \' 单引号
  • \" 双引号
  • \a 响铃 (windows只有在cmd中实现铃声,而python自带ide与pycharm没有铃声)
  • \b 退格(Backspace)
  • \e 转义
  • \000 空
  • \n 换行
  • \v 纵向制表符
  • \t 横向制表符
  • \r 回车
  • \f 换页
  • \oyy 八进制数,yy代表的字符,例如:\o12代表换行
  • \xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
  • \other 其它的字符以普通格式输出

 

7.字符串常量

  • string.ascii_lowercase 小写字母’abcdefghijklmnopqrstuvwxyz’
  • string.ascii_uppercase 大写的字母’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
  • string.ascii_letters ascii_lowercase和ascii_uppercase常量的连接串
  • string.digits 数字0到9的字符串:’0123456789’
  • string.hexdigits 字符串’0123456789abcdefABCDEF’
  • string.letters 字符串’abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
  • string.lowercase 小写字母的字符串’abcdefghijklmnopqrstuvwxyz’
  • string.octdigits 字符串’01234567’
  • string.punctuation 所有标点字符
  • string.printable 可打印的字符的字符串。包含数字、字母、标点符号和空格
  • string.uppercase 大学字母的字符串’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
  • string.whitespace 空白字符 ‘\t\n\x0b\x0c\r ‘

例:

import string

print(string.digits)

#结果:0123456789

 

 

8.f-string格式化字符串

从Python 3.6开始,f-string是格式化字符串的新方法,更易读,更简洁,不易出错,而且速度更快!

案例:

name = 'Eric' print(f'Hello, my name is {name}')

#输出 'Hello, my name is Eric'

 

二、字符串函数

1.字符串函数目录

  • [1]capitalize() 将string的第一个字符转换为大写
  • [2]lower() string转为小写
  • [3]upper() string转换大写
  • [4]swapcase() 将字符串中大写转换为小写,小写转换为大写
  • [5]title() 返回标题化的字符串,即所有单词都是大写开始,其余字母小写
  • [6]center() 返回一个指定宽度的string
  • [7]len() 返回字符串长度
  • [8]ljust() 返回原字符串指定长度(左对齐),不足则填充,足则返回原字符串
  • [9]rjust() 返回原字符串指定长度(右对齐),不足则填充,足则返回原字符串
  • [10]zfill() 返回指定长度的字符串,原字符串右对齐,前面填充0,足则返回原字符串
  • [11]count() 返回某str在string出现的次数
  • [12]max() 返回string中最大的字母。
  • [13]min() 返回string中最小的字母。
  • [14]decode() 解码string
  • [15]encode() 编码string
  • [16]startswith() 检查string是否是以某字符串开头
  • [17]endswith() 检查string是否以某str结束
  • [18]join() 以指定字符串作为分隔符,将 seq 中所有的元素合并为一个新的字符串
  • [19]find() 检测str是否包含在string中
  • [20]index() 跟find()一样,但找不到会报异常
  • [21]rfind() 类似于find()函数,不过是从右边开始查找
  • [22]rindex() 类似于index(),不过是从右边开始
  • [23]isalnum() 若string至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False
  • [24]isalpha() 若string至少有一个字符并且所有字符都是字母则返回True, 否则返回False
  • [25]isdigit() 若string只包含数字则返回True否则返回False..
  • [26]islower() 若string中所有这些字符都是小写,则返回True,否则返回False
  • [27]isnumeric() 若string中只包含数字字符,则返回True,否则返回False
  • [28]isspace() 若string中只包含空格,则返回True,否则返回False.
  • [29]istitle() 若string是标题化(所有单词以大写开始)则返回True,否则返回False
  • [30]isupper() 若string中所有这些字符都是大写,则返回True,否则返回False
  • [31]isdecimal() 检查字符串是否只包含十进制字符,返回True或False
  • [32]strip() 删除string前后空格
  • [33]lstrip() 截掉字符串左边的空格
  • [34]rstrip() 删除字符串字符串末尾的空格.
  • [35]replace() 替换指定字符串
  • [36]expandtabs() 把string中的tab符号转为空格
  • [37]split() 用分隔符截取字符串,返回列表
  • [38]splitlines() 按照('\r', '\r\n', '\n')进行分隔,返回列表
  • [39]maketrans() 创建字符映射的转换表,用translate函数实现映射转换
  • [40]translate() 根据maketrans给出的表转换string的字符

 

2.字符串函数用法

[1]capitalize

# 第一个字符转换为大写

str.capitalize()

 

[2]lower()

# 将字符串中所有大写字符转为小写

语法:str.lower()

 

[3]upper()

# 将字符串中所有小写字符转为小写

语法:str.upper()

 

[4]swapcase()

# 将字符串中大写转换为小写,小写转换为大写

语法:str.swapcase()

 

[5]title()

字符串标题化,即首字符大写

语法:str.title()

 

[6]center()

# 方法返回一个指定的宽度 width 居中的字符串,如果 width 小于字符串宽度直接返回字符串,否则使用 fillchar 去填充,默认为空格。

语法:str.center(width[, fillchar])

例:

str = "[www.runoob.com]"

str.center(40, '*')

 

[7]len()

# 返回字符串长度

语法:len(str)

 

[8]ljust()

# 返回一个原字符串左对齐,如果 width 小于字符串宽度直接返回字符串,否则使用 fillchar 去填充,默认为空格。

语法:str.ljust(width[, fillchar])

例:

str = "Runoob example....wow!!!"

print (str.ljust(50, '*'))

#结果:Runoob example....wow!!!**************************

 

[9]rjust()

# 返回一个原字符串右对齐,如果 width 小于字符串宽度直接返回字符串,否则使用 fillchar 去填充,默认为空格。

语法:str.rjust(width[, fillchar])

例:

str = "this is string example....wow!!!"

str.rjust(50, '*')

#结果:**************************Runoob example....wow!!!

 

[10]zfill()

# 返回指定长度width的字符串,原字符串右对齐,如果字符串长度不足,前面填充0

语法:str.zfill(width)

 

[11]count()

统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。

语法:str.count(sub, start= 0,end=len(string))

sub -- 搜索的子字符串

start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。

end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

例:

str="www.runoob.com"

str.count('run',0,10)

 

[12]max()

返回string中最大的字母

语法:max(str)

 

[13]min()

返回string中最小的字母

语法:min(str)

 

[14]decode()

以encoding指定的编码格式解码字符串。默认编码为字符串编码。

注:字符串没有decode属性,字符串先有编码encode,才后有解码decode

语法:str.decode(encoding='UTF-8',errors='strict')

encoding -- 要使用的编码,如"UTF-8"。

errors -- 设置不同错误的处理方案。

'strict'为默认方案,意为编码错误引起一个UnicodeError。

'ignore'忽略其中有异常的编码,仅显示有效的编码

'replace'替换其中异常的编码

其他可能得值有'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

常用编码格式:

(1)gb2312 支持简体中文

(2)gbk 支持简体中文及繁体中文,GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准

(3)big5 支持繁体中文

(4)utf-8 万国码,解决国际上字符的一种多字节编码,支持几乎所有字符

例:

str = "this is string example....wow!!!";

str2 = str.encode('utf-8') #以utf-8对str进行编码

str = str2.decode('utf-8') #以utf-8对str进行解码

 

[15]encode()

以encoding 指定的编码格式编码字符串

语法:str.encode(encoding='UTF-8',errors='strict')

encoding -- 要使用的编码,如"UTF-8"。

errors -- 设置不同错误的处理方案。

'strict'为默认方案,意为编码错误引起一个UnicodeError。

'ignore'忽略其中有异常的编码,仅显示有效的编码

'replace'替换其中异常的编码

其他可能得值有'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

常用编码格式:

(1)gb2312 支持简体中文

(2)gbk 支持简体中文及繁体中文,GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准

(3)big5 支持繁体中文

(4)utf-8 万国码,解决国际上字符的一种多字节编码,支持几乎所有字符

例:

u = u'中文'

str = u.encode('gb2312') #以gb2312编码对unicode对像进行编码

str1 = u.encode('gbk') #以gbk编码对unicode对像进行编码

str2 = u.encode('utf-8') #以utf-8编码对unicode对像进行编码

 

 

[16]startswith()

检查string是否是以某字符串开头,是则返回 True,否则返回 False

语法:str.startswith(str, beg=0,end=len(string))

str -- 检测的字符串。

strbeg -- 可选参数用于设置字符串检测的起始位置

strend -- 可选参数用于设置字符串检测的结束位置

例:

str = "this is string example....wow!!!"

print(str.startswith('this'))

 

[17]endswith()

判断字符串是否以指定后缀结尾,是则返回True,否则返回False

语法:str.endswith(suffix[, start[, end]])

suffix -- 该参数可以是一个字符串或者是一个元素

start -- 字符串中的开始位置

end -- 字符中结束位置

例:

Str='Runoob example....wow!!!'

suffix='!!'

print(Str.endswith(suffix))

print(Str.endswith(suffix,20))

 

[18]join()

将序列中的元素以指定的分隔符连接生成一个新的字符串

注:适用于序列对象:字符串、列表、元组

语法:str.join(sequence)

例:

(1)字符串:

seq='runoob'

res_str='_'.join(seq)

#结果:'r_u_n_o_o_b'

(2)列表

list1=('len','speak','chinese')

res_str='_'.join(list1)

#结果:'len_speak_chinese'

 

[19]find()

检测字符串中是否包含子字符串str,如果包含子字符串返回开始的索引值,否则返回-1

语法:str.find(str, beg=0, end=len(string))

str -- 指定检索的字符串

beg -- 开始索引,默认为0

end -- 结束索引,默认为字符串的长度

例:

str1 = "Runoob example....wow!!!"

str2 = "exam";

print (str1.find(str2))

print (str1.find(str2, 5))

print (str1.find(str2, 10))

 

[20]index()

检测字符串中是否包含子字符串str,如果包含子字符串返回开始的索引值,否则报异常

语法:str.index(str, beg=0, end=len(string))

str -- 指定检索的字符串

beg -- 开始索引,默认为0

end -- 结束索引,默认为字符串的长度

例:

str1 = "Runoob example....wow!!!"

str2 = "exam";

print (str1.index(str2))

print (str1.index(str2, 5))

print (str1.index(str2, 10))

 

 

[21]rfind()

类似于find()函数,不过是从右边开始查找

语法:str.rfind(str, beg=0 end=len(string))

str -- 指定检索的字符串

beg -- 开始索引,默认为0

end -- 结束索引,默认为字符串的长度

 

[22]rindex()

类似于index(),不过是从右边开始

语法:str.rindex(str, beg=0 end=len(string))

str -- 指定检索的字符串

beg -- 开始索引,默认为0

end -- 结束索引,默认为字符串的长度

 

[23]isalnum()

若string至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False

语法:str.isalnum()

 

[24]isalpha()

若string至少有一个字符并且所有字符都是字母则返回True, 否则返回False

语法:str.isalpha()

 

[25]isdigit()

若string只包含数字则返回True否则返回False

语法:str.isdigit()

 

[26]islower()

若string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回False

语法:str.islower()

 

[27]isnumeric()

若string中只包含数字字符,则返回True,否则返回False ,这种方法是只针对unicode对象

语法:str.isnumeric()

 

[28]isspace()

若string中只包含空格,则返回True,否则返回False

语法:str.isspace()

 

[29]istitle()

若string是标题化(所有单词以大写开始)则返回True,否则返回False

语法:str.istitle()

 

[30]isupper()

若string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,否则返回False

语法:str.isupper()

 

[31]isdecimal()

检查字符串是否只包含十进制字符,返回True或False

语法:str.isdecimal()

 

[32]strip()

删除string头尾指定的字符(默认为空格)

语法:str.strip([chars])

chars -- 移除字符串头尾指定的字符

例:

str = "*****this is string example....wow!!!*****"

print (str.strip( '*' ))

 

[33]lstrip()

截掉字符串左边的空格或指定字符

语法:str.lstrip([chars])

chars -- 移除字符串头尾指定的字符

例:

str = "88888888this is string example....wow!!!8888888";

print( str.lstrip('8') );

#结果:this is string example....wow!!!8888888

 

[34]rstrip()

截掉字符串右边的空格或指定字符

语法:str.rstrip([chars])

chars -- 移除字符串头尾指定的字符

 

[35]replace()

替换指定字符串

语法:str.replace(old, new[, max])

old -- 将被替换的子字符串。

new -- 新字符串,用于替换old子字符串。

max -- 可选字符串, 替换不超过 max 次

例:

str = "this is string example....wow!!!"

print (str.replace("is", "was", 3))

 

[36]expandtabs() 把string中的tab符号转为空格

把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8

语法:str.expandtabs(tabsize=8)

tabsize -- 指定转换字符串中的 tab 符号('\t')转为空格的字符数

例:

str = "this is\tstring example....wow!!!"

str.expandtabs()

 

[37]split()

通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串

返回值:列表

语法:str.split(str="_", num=string.count(str))

str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等

num -- 分割次数,省略则为全部

例:

str='len_speak_chinese'

str_list=str.split('_')

 

[38]splitlines()

按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符

返回值:列表

语法:str.splitlines([keepends])

keepends -- 在输出结果里是否去掉换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符

行边界符:

\n 换行

\r 回车

\r\n 回车 + 换行

\v 或 \x0b 行制表符

\f 或 \x0c 换表单

\x1c 文件分隔符

\x1d 组分隔符

\x1e 记录分隔符

\x85 下一行 (C1 控制码)

\u2028 行分隔符

\u2029 段分隔符

 

例:

str='ab c\n\nde fg\rkl\r\n'

str_list=str.splitlines(True)

#结果:['ab c\n', '\n', 'de fg\r', 'kl\r\n']

 

 

[39]maketrans()

创建字符映射的转换表,用translate函数实现映射转换,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标

注:两个字符串的长度必须相同,为一一对应的关系。

语法:str.maketrans(intab, outtab)

intab -- 字符串中要替代的字符组成的字符串。

outtab -- 相应的映射字符的字符串。

例:参考translate()

 

[40]translate() 根据maketrans给出的表转换string的字符

根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 deletechars 参数中

语法:str.translate(table[, deletechars])

table -- 翻译表,翻译表是通过maketrans方法转换而来。

deletechars -- 字符串中要过滤的字符列表。

例:

intab = "aeiou"

outtab = "12345"

trantab = str.maketrans(intab, outtab)

str = "this is string example....wow!!!"

print (str.translate(trantab))

#结果:th3s 3s str3ng 2x1mpl2....w4w!!!

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值