Python基础-字符串的使用
基础知识
字符串解释:字符串是不可变的,所有元素赋值和切片赋值操作都是非法的,属于序列一种(字符串、元组、列表)。
一、格式化字符串
(1)、format()方法==str.format()
作用:将传入的参数进行格式化
1、替换字段名的两种方法:要替换的字符可以没有名称或使用索引值
>>> "{foo},{},{bar},{}".format(1,2,foo=0,bar=5)
'0,1,5,2'
>>> "{foo},{0},{bar},{1}".format(1,2,foo=0,bar=5)
'0,1,5,2'
2、还可以使用%进行格式化
>>> "This is a test values %#s" % 10 (这里百分号后面必须是s字符等) 'This is a test values 10'
二、为字符串赋值
还可使使用常规的方法,给出一个序列,通过索引值进行赋值
如:
>>> fullname = ['Liu','GUO']
>>> "Mr {name[1]},you are right".format(name=fullname)
'Mr GUO,you are right'
格式字符串中的基本转换
有跟在叹号后面的三个转换标志(s(str),r(repr),a(ASCII))
如:
{values1!s }
和跟在冒号“:”后面的转换类型(格式化说明符)(b,c,d,e,E,f,F,g,G,n,o,s,x,X,%)
如:
{values:b}
它们都是作用于str.format对字符串格式化,如果使用(%)进行格式化字符串则不需要使用到“!”和“:”,直接使用%s,%d等
宽度表示方法
>>> "{a:10}".format(a=5)
''
精度的表示方法
>>> from math import pi
>>> "This is a values {pi:.2f}".format(pi=pi)
'This is a values 3.14'
千位分隔符
>>> "This is a kill a {:,}".format(5**1000)
同时指定其它格式设置元素时,这个逗号应该放在宽度和精度的句点之间
符号,对齐,和用0填充
使用0填充:>>> '{:010.2f}'.format(pi)红色字体那里表示用什么填充
左对齐(<):>>> '{:<10.2f}'.format(pi)
右对齐(>):>>> '{:>10.2f}'.format(pi)
居中对齐(^):>>> '{:^10.2f}'.format(pi)
str将数字、列表、字典、range对象转为字符串
1、 将数字转换为字符串
>>> price=10 >>> print(str(price))
10
2、 将列表转换为字符串
>>> print(str([1,3,2])) [1, 3, 2]
3、 将字典转换为字符串
>>> print(str({'name':'liugojun'}))
{'name': 'liugojun'}
4、 将range函数转换为字符串
>>> print(str(range(1,10))) range(1, 10)
字符串的方法
(1)、center()方法
str.center(width[,fillchar])
参数说明:width:指定长度 fillchar:填充字符
作用:中间对齐,字符串长度小于指定长度,两边使用指定字符填充至指定长度
举例:
>>> names = name.center(20,"#") >>> print(names) #####liuguojun######
附加:
Ⅰ 、ljust(宽度,“符号“)右填充
str.ljust(width[,fillchar]) 参数说明:width:指定长度 fillchar:填充字符
作用:左对齐,字符串长度小于指定长度,右边使用指定字符填充至指定长度
>>> align = name.ljust(20,"#") >>> print(align) liuguojun###########
Ⅱ、rjust(宽度,”符号“)左填充
>>> print(name.rjust(20,"%")) %%%%%%%%%%%liuguojun
Ⅲ 、zfill(宽度)左0填充
>>> print(name.zfill(20)) 00000000000liuguojun
(2)、find()方法
作用:在字符串中查找子串,如果查找的子串在字符串之中,返回索引值,如果不在返回-1.
格式:str.find(‘查找的子串’,起点,终点)
其中的起点和终点可以不定义
举例:
#不设置起点和终点进行查询
>>> name = 'my name is LiuGuoJun'
>>> name.find("Liu")
11
#查找结果不存在返回-1
>>> name.find('ta')
-1
#设置指定的查找范围
>>> name = "liuguojun"
>>> name.find("liu",1,8)
-1 #索引起始位置为1略过了l,所以找不到
>>> name.find("liu",0,8)
0
#字符串find和切片方法结合使用
#给定一个价格列表
phoneprice = "mate20:4999 xiaomi8:4199 OPPOR17:4299 "
#分析组成结构:由(品牌:价格+“空格”)组成,查找时定义首尾索引,通过切片取值
#定义一个变量由用户输入要查找的关键字
name = input("请输入你要查找的手机品牌:")
#查找到的第一个关键字的索引
index1 = phoneprice.find(name)
#查找第一个关键字结尾(“这里以空格结尾”)
index2 = phoneprice.find(" ",index1)
#知道首尾索引,通过切片取值
price = phoneprice[index1:index2]
print(price)
附加:
(1)、rfind()如果有多个相同的结果返回最后一个结果索引
>>> phoneprice = "mate20:4999 xiaomi8 4199 OPPOR17:4299"
>>> mi = "xiaomi" #将xiaomi值赋给mi
>>> vivo = "vivo" #将vivo值赋给vivo
>>> print("rfind mi",phoneprice.rfind(mi)) #反向查找“xiaomi”
rfind mi 12
>>> print("rfind vivo",phoneprice.rfind(vivo)) #反向查找“vivo”
rfind vivo -1
(2)、Index()返回第一个结果索引,如果结果不存在则返回values错误
>>> phoneprice = "mate20:4999 xiaomi8 4199 OPPOR17:4299"
>>> mi = "xiaomi"
>>> vivo = "vivo"
#查找结果不存在则报异常
>>> print("index vivo",phoneprice.index(vivo))
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
print("index mi",phoneprice.index(vivo))
ValueError: substring not found
#查找结果存在则返回位置
>>> print("index mi",phoneprice.index(mi))
index mi 12
(3)、rindex()和index结果相反,返回最后一个
举例:查找文件类型
# http://i1.umei.cc/uploads/tu/201711/9999/6e312a86a7.jpg
# 如上可知,文件路径大致结构是图名在最后“.”之前/之后,类型是点之后
#使用r将输入的字符串原格式输出
path = input(r"请输入文件路径:")
#找到最后一个/的位置
index1 = path.rindex("/")
#然后找到最后一个点的位置
index2 = path.rindex(".")
#找到文件名(最后一个/之后,点之前)
name = path[index1+1:index2]
#找到图片类型
imgtype = path[index2:]
#打印文件名和文件类型
print("filename:%s" % name)
print("filetype:%s" % imgtype)
(4)、count()统计结果出项次数
>>> phoneprice = "mate20:4999 xiaomi8 4199 OPPOR17:4299"
>>> mi = "xiaomi"
>>> vivo = "vivo"
>>> print("count mi",phoneprice.count(mi))
count mi 1
>>> print("count vivo",phoneprice.count(vivo))
count vivo 0
(3)、join()方法
作用:合并字符串
格式:connector.join(iterable) connector是用来连接的连接符,iterable是可迭代对象
举例:
>>> lesson = ['C++','Python','Java'] >>> connector = "/" >>> print(connector.join(lesson)) C++/Python/Java
(4)、split()方法
作用:将字符串拆分为序列
格式:split(sep,maxsplit)
说明: sep:指定分割的分隔符(在字符串中)如果没有指定默认使用所有空字符。
maxsplit:指定分割的数量,默认所有分隔符都切分(因此,列表多只能有maxsplit+1元素)。如果未指定maxsplit或-1,则对拆分 数量没有限制(进行所有可能的拆分)。
举例:
>>> tab = "1,2,3,4,5"
>>> print(tab.split("+")) #指定分隔符不存在,不进行分割
['1,2,3,4,5']
>>> print(tab.split()) #不指定分隔符,且字符串不是已空格隔离的,不进行分割
['1,2,3,4,5']
>>> print(tab.split(",")) #指定分割符进行分割
['', '', '', '', '']
>>> print(tab.split(",",-1)) #指定分隔符,最大分割数量为-1,也就是分割全部
['', '', '', '', '']
>>> print(tab.split(",",2)) #指定分隔符,同时指定最大分割数量
['', '', '3,4,5']
如果不指定分隔符,将默认从单个或多个连续的空白符(空格、制表符、换行符等)处进行拆分。
Join和split、切片方法联合使用
#题目是:将[1,2,3]转换为123
>>> numbers = [1,2,3]
>>> print(numbers)
[1, 2, 3]
#先将序列转换为字符串
>>> str1 = str(numbers)
>>> print(str1)
[1, 2, 3]
#通过切片的方法,将第一个和最后一个[]符号去掉
>>> str2 = str1[1:-1]
>>> print(str2)
1, 2, 3
#然后通过切分的方法,去掉逗号
>>> str3 = str2.split(",")
>>> print(str3)
['', '', '']
#再通过连接的方法将它们连接起来
>>> connector = " "
>>> str4 = connector.join(str3)
>>> print(str4)
1 2 3
(5)、大小写转换方法
一、字符全部小写
str.lower():将字符串中所有大写转换为小写 返回一个字符串的副本,没有参数
str.islower():检测字符串中所有字符为小写字母 返回true或false
>>> name = "LiuGuoJun" >>> names = name.lower() >>> print(name,names) LiuGuoJun liuguojun
二、字符全部大写
str.upper():将字符串中的小写字母转换为大写字母返回一个字符串的副本,没有参数
str.isupper():检测字符串中所有字符为大写字母 返回true或false
>>> name = "liuguojun" >>> names = name.upper() >>> print(name,names) liuguojun LIUGUOJUN
三、所有单词首字母大写
str.title():字符串标题化,将每个单词首字母大写,其它小写
str.istitle():检测字符串中所有单词拼写首字母是否为大写,其它为小写,返回true或false
>>> name = "liu guo jun" >>> names = name.title() >>> print(name,names) liu guo jun Liu Guo Jun
四、第一个字母大写
Capitalize()将字符串第一个字母变为大写,其它字母变为小写。
格式&用法:str.capitalize()
Casefold()将所有大写字符转换为小写后生成的字符串
注释:Python casefold() 方法是Python3.3版本之后引入的,其效果和 lower() 方法非常相似,都可以转换字符串中所有大写字符为小写。
两者的区别是:lower() 方法只对ASCII编码,也就是‘A-Z’有效,对于其他语言(非汉语或英文)中把大写转换为小写的情况只能用 casefold() 方法。
>>> name = "liu guo jun" >>> names = name.capitalize() >>> print(name,names) liu guo jun Liu guo jun
五、大小写转换
str.swapcase():将字符串中的大小写交换
>>> name = "liu guo jun" >>> names = name.swapcase() >>> print(name,names) liu guo jun LIU GUO JUN
六、检测
str.isalpha():检测字符串中所有字符为字母返回true或false
str.isdigit():检测字符串中所有字符为数字 返回true或false
str.isspace():检测字符中所有字符是否为空格 返回true或false
(6)、replace()方法
作用:指定子串都替换为另一个字符串,并返回替换后结果
格式:str.replace(old,new[,count])
返回值:一个字符窜的副本
解释:将所有出现的子字符串old替换为new。如果给出了可选参数计数,则只替换第一个计数出现次数old被替换字符串,new:替换后的内容 count:替换个数,默认替换所有
举例:
>>> name = "liu,guo,jun,liu,guo,jun"
>>> rename = name.replace("liu","hao") #没有指定替换个数,默认替换所有
>>> print(rename)
hao,guo,jun,hao,guo,jun
>>> rename = name.replace("liu","hao",1) #指定了替换个数
>>> print(rename)
hao,guo,jun,liu,guo,jun
练习:使用replace将[1,2,3]转换为1 2 3
思路:首先将列表转换为字符串类型,然后通过切片str2 = str1[1:-1]的方法,将“[]”去掉,去掉之后再使用replace将逗号替换为空格即可。
(7)、strip()方法
作用:删除开头和末尾的空白(或指定符号),不包括中间的(最多只能指定一个替换符)
用法:str.strip()
>>> ' This is a kept '.strip()
'This is a kept'
>>> "%$# thid is #$ quit **".strip('%$#*')
' thid is #$ quit '
(8)、translate()方法
作用:替换字符串的特定部分
用法:必须与maketrans()方法结合使用,使用时必须创建一个转换表 如:
>>> table = str.maketrans('cs','kz',' ') #创建一个转换表
>>> "this is an increadible test".translate(table) #使用maketrans命令转换
'thizizaninkreadibletezt'
(9)、startswith()和endswith()方法
str.startswith(prefix[,start[,end]]) 参数说明:prefix:指定字符串.start:起始索引 end:结束索引 解释: 检查字符串是否以指定字符串开头,是返回True,否则返回False。 前缀也可以是要查找的前缀的元组。 使用可选的开始,测试字符串从该位置开始。使用可选的结束,停止比较该位置的字符串。
str.endswith(suffix[,start[,end]]) 参数说明:suffix:指定字符串,其余同上 解释: 检查字符串是否以指定字符串结尾,如果是返回True如果否则返回false 后缀也可以是一个元组的后缀来寻找。 使用可选的启动,测试从该位置开始。使用可选的结束,停止在该位置的比较
举例:过滤出所有小米手机
>>> listphone=['xiaomi8','huaweimeta20','xiaomi5x','xiaomi6x']
#定义for循环,遍历listphone
>>> for i in listphone:
#使用if语句,寻找符合条件的结果
if i.startswith(phone):
print(i)
xiaomi8
xiaomi5x
xiaomi6x
(10)、判断字符串是否满足特定的条件
这些方法都是is开头的,前面附加的函数中有。
Python基础-字符串的使用的更多相关文章
- python基础——字符串和编码
python基础——字符串和编码 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用 ...
- Python 基础-> 字符串,数字,变量
Python 基础:字符串,数字,变量 1. 字符串 (信息的一种表达方式) a. 使用引号创建字符串 b. 单引号,双引号,三引号: ', ", ''', ""&quo ...
- Python基础-字符串格式化_百分号方式_format方式
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 基础 字符串拼接 + if while for循环
注释单行注释 #多行注释 ''' 三个单引号或者三个双引号 """ ''' 用三引号引住可以多行赋值 用户交互 input 字符串拼接 + ""%( ...
- Python基础——字符串
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 在Python中,字符串也是一种数据类型.相比其它数据类型,字符串算是比较复杂的.为何呢?因为字符串不仅包含英文字母 ...
- python基础-字符串(6)
一.引言 当打来浏览器登录某些网站的时候,需要输入密码,浏览器把密码传送到服务器后,服务器会对密码进行验证,其验证过程是把之前保存的密码与本次传递过去的密码进行对比,如果相等,那么就认为密码正确,否则 ...
- python基础——字符串、编码、格式化
1.三种编码:ascii Unicode utf8 2.字符串和编码数字的两个函数:ord(字符转数字ord(‘A’)=65)和 chr(数字转字符chr(65)=A) 3.bytes存储编码,记住两 ...
- [Python] Python基础字符串
Python的语法采用缩进的方式,一般使用四个空格,并且是大小写敏感的 字符编码 计算机只能处理数字,如果要处理文本,必须先把文本转换成数字才能处理 采用8个比特(bit)作为一个字节(byte) 一 ...
- Python基础(字符串和编码)
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特 ...
- 六 Python基础 字符串和编码
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特 ...
随机推荐
- PHP迭代器 Iterator
Iterator是PHP自带的迭代器接口. 实现该接口的类必须实现该接口的方法,以便能够使用foreach进行输出迭代后的数据. interface Iterator extends Traversa ...
- Redis整理第三波(生存时间、事务管理)
expire 设置生存时间 Redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即到期后数据销毁. TTL查看key的剩余时间,当返回值为-2时,表示键被删除. 当 ...
- sass-基础
导入: sass的导入(@import)规则和CSS的有所不同,编译时会将@import的scss文件合并进来只生成一个CSS文件. 但是如果你在sass文件中导入css文件如@import 'res ...
- AOSP 源码下载
网上关于这块大部分教程都是无效的,因为墙的缘故,无法使用官方提供的下载链接,我这里使用了清华大学的镜像,是能够顺利将 AOSP 下载下来.如果你还没有安装 Ubuntu,请看<VirtualBo ...
- 【起航计划 030】2015 起航计划 Android APIDemo的魔鬼步伐 29 App->Preferences->Preferences from code
这里我们使用类比的方法,将 PreferenceActivity 与一般的Activity 作个类比,可以更好的理解Android.Preference中的各个类. PreferenceActivit ...
- 如何让.NET Core应用的配置与源文件保持同步?
配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置;第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.接下来我们利用一个简单的.NET Core控 ...
- 笨办法学Python(六)
习题 6: 字符串(string)和文本 虽然你已经在程序中写过字符串了,你还没学过它们的用处.在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途.首先我们解释一下字符串是什 ...
- selenium入门14 窗口切换
窗口切换: 当前窗口句柄 current_window_handle 所有的窗口句柄 window_handles 切换窗口 switch_to_window() #coding=utf-8 #切换窗 ...
- requireJS的学习
官方文档 http://www.requirejs.cn/ 参考链接 http://www.w3cschool.cc/w3cnote/requirejs-tutorial-1.html http:// ...
- java读取pfx或P12格式的个人交换库公私钥
使用的是CFCA签发的用于银行间交换数据的证书,下载后直接添加到浏览器中 1.导出 从浏览器导出p12文件(包含私钥) 2.验证 两种方式: openssl 代码(请注意alias别名是如何获取的): ...