python 基础 day4.字符串与序列

1.字符串

Python字符串拼接

直接将两个字符串紧挨着写在一起,这样的话 Python 就会自动拼接它们

a='abc''m'
print(a)#abcm

这种写法只是书写字符串的一种特殊方法,并不能算是真正意义上的拼接字符串。
Python 使用加号(+)作为字符串的拼接运算符

a='abc'
b='m'
print(a+b)#abcm

Python字符串拼接数字

直接连接数字时候程序报错,应使用str()或者repr() 函数将数字转换成字符串

a='abc'
b=1
print(a+b) #TypeError: can only concatenate str (not "int") to strc
c=str(1)
print(a+c) #abc1

其中str() 是 Python 内置的类型(和 int()、float() 一样,而 repr() 则只是一个函数)。此外,repr() 还有一个功能,它会以 Python 表达式的形式来表示值。例如:

a="There is my home"
print(str(a))#There is my home
print(repr(a))#'There is my home'

在交互式解释器中输入一个变量(或表达式)时,Python 会自动使用 repr() 函数处理该变量(或表达式)。

访问字符串中的值

字符串的切片
string[start : end : step]

a="hello world"
print(a[6])#
print(a[:6])#hello 
print(a[5:])# world
print(a[5:8])# wo
print(a[0:6:2])#hlo

用 in 运算符判断是否包含某个子串`

print('a' in a)#False

还可使用全局内置的 min() 和 max() 函数获取字符串中最小字符和最大字符。例如如下代码

# 输出a字符串中最大的字符
print(max(a)) # w
# 输出s字符串中最大的字符
print(min(a)) # 空格

获取字符串长度或字节数

  • 使用len()函数
a='https://www.runoob.com/python3/python3-string.html'
print(len(a))#50
  • 在 Python 中,不同的字符所占的字节数不同,数字、英文字母、小数点、下划线以及空格,各占一个字节。
  • 而一个汉字可能占 2~4 个字节,具体占多少个,取决于采用的编码方式。例如,汉字在 GBK/GB2312 编码中占用 2 个字节,而在UTF-8 编码中一般占用 3 个字节。
  • 可以通过使用 encode() 方法,将字符串进行编码后再获取它的字节数。
a="我爱python"
print(len(a.encode())) #12
print(len(a.encode('gbk'))) #10

分割字符串

split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串

  • 这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。该方法的基本语法格式如下:

str.split(sep,maxsplit)

各参数含义

  • str:表示要进行分割的字符串;
  • sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。
  • maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为-1,则表示分割次数没有限制。

在 split 方法中,如果不指定 sep 参数,那么也不能指定 maxsplit 参数。

a="TypeError: can only concatenate str (not) to strc"
#未指定sep时候默认空格
print(a.split())#['TypeError:', 'can', 'only', 'concatenate', 'str', '(not)', 'to', 'strc']
#以'c'进行分割
print(a.split('c'))#['TypeError: ', 'an only ', 'on', 'atenate str (not) to str', '']
#以'c'进行分割,并且最多分割成四个字符串
print(a.split('c',3))#['TypeError: ', 'an only ', 'on', 'atenate str (not) to strc']

合并字符串

join() 方法是spilt()的逆用,用来将列表(或元组)中包含的多个字符串连接成一个字符串。
join() 方法的语法格式如下:

newstr = str.join(iterable)

此方法中各参数的含义如下:

  • newstr:表示合并后生成的新字符串;
  • str:用于指定合并时的分隔符;
  • iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供。
list=['TypeError: ', 'an only ', 'on', 'atenate str (not) to str', '']
new_list='c'.join(list)
print(new_list)#TypeError: can only concatenate str (not) to strc
dir = '','usr','bin'
new_dir='/'.join(dir)
print(new_dir)#/usr/bin

统计字符串出现的次数

  • count 方法

str.count(sub[,start[,end]])

list="TypeError: can only concatenate str (not) to strc"
print(list.count('r'))#5
print(list.count('r',10))#2
print(list.count('r',10,20))#0

检测字符串中是否包含某子串

find() 方法用于检索字符串中是否包含目标字符串,如果包含,则返回第一次出现该字符串的索引;反之,则返回 -1。

str.find(sub[,start[,end]])

list="TypeError: can only concatenate str (not) to strc"
print(list.find('r'))#5
print(list.find('r',10))#34
print(list.find('r',10,20))#-1
  • 检测字符串中是否包含某子串
    index() 方法也可以用于检索是否包含指定的字符串,与find()不同在于当没有时返回错误

str.index(sub[,start[,end]])

字符串对齐方法(ljust()、rjust()和center())

  • Python ljust()方法
  • just() 方法的功能是向指定字符串的右侧填充指定字符,从而达到左对齐文本的目的
    ljust() 方法的基本格式如下

S.ljust(width[, fillchar])

其中各个参数的含义如下:

  • S:表示要进行填充的字符串;
  • width:表示包括 S 本身长度在内,字符串要占的总长度;
  • fillchar:作为可选参数,用来指定填充字符串时所用的字符,默认情况使用空格。
S = 'https://mp.csdn.net/mdeditor/10205095'
print(S.ljust(50))#https://mp.csdn.net/mdeditor/10205095
#其后不满50的地方是空格
print(S.ljust(50,'.'))#https://mp.csdn.net/mdeditor/10205095............
  • rjust()方法
    rjust() 方法是向字符串的左侧填充指定字符,从而达到右对齐文本的目的。

S.rjust(width[, fillchar])

S = 'https://mp.csdn.net/mdeditor/10205095'
print(S.rjust(50))#            https://mp.csdn.net/mdeditor/10205095
#其后不满50的地方是空格
print(S.rjust(50,'.'))#............https://mp.csdn.net/mdeditor/10205095
  • center()方法
  • 让文本居中,而不是左对齐或右对齐。
print(S.center(50))#      https://mp.csdn.net/mdeditor/10205095      
#其后不满50的地方是空格
print(S.center(50,'.'))#......https://mp.csdn.net/mdeditor/10205095......

startswith()和endswith()方法

  • startswith()方法
  • 用于检索字符串是否以指定字符串开头,如果是返回 True;反之返回 False。
  • endswith()方法
  • 用于检索字符串是否以指定字符串结尾,如果是则返回 True;反之则返回 False。

str.startswith(sub[,start[,end]])
sub:要检索的子串;

S = 'https://mp.csdn.net/mdeditor/102705095'
print(S.startswith('h'))#True
print(S.startswith('h',5))#False
print(S.endswith('h'))#False
print(S.endswith('h',5))#False

字符串大小写转换(3种)函数及用法

  • title()方法
  • 用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写,转换完成后,此方法会返回转换得到的字符串。

str.title()

  • lower()方法
  • 用于将字符串中的所有大写字母转换为小写字母,转换完成后,该方法会返回新得到的字符串。

str.lower(0

  • upper()方法
  • 将字符串中的所有大写字母转换为小写字母,转换完成后,该方法会返回新得到的字符串

str.upper()

str1='str.title'
str2='I LIKE'
str3 = "i like "
print(str1.title())#Str.Title
print(str2.lower())#i like
print(str3.upper())#I LIKE

去除字符串中空格(删除指定字符)的3种方法

用户输入数据时,很有可能会无意中输入多余的空格,或者在一些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。

这里的特殊字符,指的是制表符(\t)、回车符(\r)、换行符(\n)等。

  • strip()方法
  • 删除字符串前后(左右两侧)的空格或特殊字符。
  • lstrip()方法
  • lstrip():删除字符串前面(左边)的空格或特殊字符。
  • rstrip()方法
  • rstrip():删除字符串后面(右边)的空格或特殊字符

str.strip([chars])
str.lstrip([chars])
str.rstrip([chars])

  • [chars] 用来指定要删除的字符,可以同时指定多个,如果不手动指定,则默认会删除空格以及制表符、回车符、换行符等特殊字符。
str = "  c.biancheng.net \t\n\r"
print(str)#  c.biancheng.net

print(str.strip())#c.biancheng.net
print(str.lstrip())#c.biancheng.net

print(str.rstrip())#  c.biancheng.net

format()格式化输出方法详解

字符串类型(str)提供了 format() 方法对字符串进行格式化,format() 方法的语法格式如下:

str.format(args)
str 用于指定字符串的显示样式;args 用于指定要进行格式转换的项,如果有多项,之间有逗号进行分割。

  • str 显示样式的书写格式。在创建显示样式模板时,需要使用{}和:来指定占位符,其完整的语法格式为:

{ [index][ : [ [fill] align] [sign] [#] [width] [.precision] [type] ] }
注意,格式中用 [] 括起来的参数都是可选参数,即可以使用,也可以不使用。各个参数的含义如下:

  • index:指定:后边设置的格式要作用到 args 中第几个数据,数据的索引值从 0 开始。如果省略此选项,则会根据 args 中数据的先后顺序自动分配。
  • fill:指定空白处填充的字符。注意,当填充字符为逗号(,)且作用于整数或浮点数时,该整数(或浮点数)会以逗号分隔的形式输出,例如(1000000会输出
    1,000,000)。
  • align:指定数据的对齐方式,具体的对齐方式如表 1 所示。
    在这里插入图片描述
  • sign:指定有无符号数,此参数的值以及对应的含义如表 2 所示
    在这里插入图片描述
  • width:指定输出数据时所占的宽度。
  • .precision:指定保留的小数位数。
  • type:指定输出数据的具体类型,如表 3 所示。
    在这里插入图片描述
#顺序填充
str='Hi.{} Long time {} see'
print(str.format('xiaoming', 'no'))#Hi.xiaoming Long time no see
#下标填充
str='Hi.{1} Long time {0} see'
print(str.format('no', 'xiaoming'))#Hi.xiaoming Long time no see
#对象填充
str='{name} owe me {number} yuan'
print(str.format(name='huzhixing',number=100.255))#huzhixing owe me 100.255 yuan
str='%s owe me %f yuan'%("huzhixing",100.225)
print(str)#huzhixing owe me 100.225000 yuan
str='{1:.^20} owe me {0:.^+20.5} yuan'
print(str.format(100.225,'huzhixing'))#.....huzhixing...... owe me ......+100.22....... yuan

encode()和decode()方法:字符串编码转换

  • encode()方法
  • encode() 方法为字符串类型(str)提供的方法,用于将 str 类型转换成 bytes 类型,这个过程也称为“编码”。
  • decode()方法
  • 和 encode() 方法正好相反,decode() 方法用于将 bytes 类型的二进制数据转换为 str 类型,这个过程也称为“解码”。

str.encode([encoding=“utf-8”][,errors=“strict”])
bytes.decode([encoding=“utf-8”][,errors=“strict”])

  • encoding = "utf-8"指定进行编码时采用的字符编码,该选项默认采用 utf-8 编码
  • errors = "strict"指定错误处理方式,默认stric
  • strict:遇到非法字符就抛出异常。
  • ignore:忽略非法字符。
  • replace:用“?”替换非法字符。
  • xmlcharrefreplace:使用 xml 的字符引用。
str = "你是猪"
str=str.encode()
print(str)#b'\xe4\xbd\xa0\xe6\x98\xaf\xe7\x8c\xaa'
str=str.decode()
print(str)#你是猪

dir()和help()帮助函数

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

2.序列

常见序列类型包括字符串(普通字符串和unicode字符串),列表和元组.所谓序列,即成员有序排列,可通过下标访问.

  • 1.判断数据是否存在与序列中:x in str ||x not in str
  • 2.重复或连接序列+*
  • 3.通过下标获取元素:s[ i ]
  • 4.分片:s [ start: end :step]
  • 5.获取序列的长度: len(s)
  • 6.获取序列的最小或最大值 :max(s) || min(s)
  • 7.统计序列的总和:sum(s)
  • 8.检索某一元素第一次出现的下标: s.index(x)
  • 9.统计某一元素在序列中出现的次数: s.count(x)

在可变序列中

  • 增加序列中的元素:s.insert(n,obj) #n为插入的的位置,obj为插入的元素
  • s.append(obj) //把括号中元素作为一个对象加入
  • s.extend(obj) //把obj这个对象中的元素加入s序列中
  • del s [ i ] //删除序列元素中角标为i的元素
  • del s[m:n:k] //删除为角标 m到n的元素,包头不包尾,每删除一个元素跳过k-1个元素
  • s[m:n]=[] //删除序列角标为m到n-1
  • s.pop(n) //返回并删除角标为n的元素,不写角标默认删除并弹回最后一个元素。角标越界报异常
  • s.remove(obj) //在序列中删除obj这个元素,若元素不存在,则抛异常
  • s.clear() //删除序列中的所有元素
  • 元素排序翻转 s.reverse()
  • 赋值序列内部元素 str2=str1.copy() //讲str1序列中的元素复制的str2序列上
  • old=new //此种方法复制元素和上面两种复制有很大的不同,old与new二者共享引用,其实质任然指向同一个内存地址,无论哪一个序列发生改变,另一个会发生相同改变。
  • s.sort() //内部排序,无返回
  • sorted(s) //返回排序后的序列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值