博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python基础2】python字符串方法及格式设置
阅读量:4145 次
发布时间:2019-05-25

本文共 5283 字,大约阅读时间需要 17 分钟。

文章目录

1 设置字符串格式

常用的设置字符串格式方法

>>> fm = 'Hello, %s.%s are you?'>>> values = ('world','How')>>> fm % values'Hello, world.How are you?'>>> >>> from string import Template>>> tmpl = Template('Hello, $who! $how are you')>>> tmpl.substitute(who='world',how='How')'Hello, world! How are you'>>> >>> '{},{},{}'.format('zero','one','two','three')'zero,one,two'>>> '{3},{2},{1}'.format('zero','one','two','three')'three,two,one'>>> '{1},{1},{0}'.format('zero','one','two','three')'one,one,zero'>>>>>> from math import pi>>> '{name} is aprosimately {value:.2f}.'.format(value=pi,name='π')'π is aprosimately 3.14.'>>> name='pi'>>> f'{name} is aprosimately {pi:.2f}'    #变量名相同时format可以简写'pi is aprosimately 3.14'>>>

2 字符串方法

方法 描述
string.capitalize() 返回字符串副本,将第一个字符大写
string.casefold() 返回经过标准化后的字符串,标准化类似于转换为小写,但是更适用于对Unicode字符串进行不区分大小写的比较
string.lower() 将字符串转换为小写,并返回结果
string.upper() 将字符串中所有的字母都转换为大写,并返回结果
string.swapcase() 将字符串中所有字母的大小写都反转,并返回结果
string.title() 将字符串的所有单词首字母大写,并返回结果
string.center(width[, fillchar]) (居中)返回一个长度为(len(string),width)的字符串。字符串中间包含当前字符串,两端用fillchar指定的字符填充(默认空格)
string.ljust(width[, fillchar]) (居左)返回一个长度为(len(string),width)的字符串。开头是当前字符串的副本,结尾使用fillchar字符填充,默认空格填充。
string.rjust(width[, fillchar]) (居右)返回一个长度为(len(string),width)的字符串。末尾是当前字符串的副本,开头使用fillchar字符填充,默认空格填充。
string.zfill(width) (补0)在字符串左边加0(但将原来打头的+或-移到开头),使其长度为width
string.find(sub[, start[, end]]) 返回找到的第一个子串sub的索引,没找到返回-1,可以设置搜索范围为string[start:end]
string.rfind(sub[, start[, end]]) 和find类似,但是返回最后一个找到的索引
string.index(sub[, start[], end]) 返回指定的第一个子串sub的索引,如果没找到将引发ValueError异常,可将搜索范围限定为string[start:end]
string.rindex(sub[,start[,end]]) 和index()方法类似,但是返回的是第一个找到的最后一个索引
string.count(sub[, start[, end]]) 计算子串sub出现的次数,可搜索范围限定string[start:end]
string.encode([encoding[], errors]) 返回适用指定编码和errors指定的错误处理方式对字符串进行编码的结果,参数errors的可能取值范围包括‘strict’、‘ignore’、‘replace’等
string.expandtabs([tabsize]) 返回将字符串中的制表符展开为空格后的结果,tabsize默认为8
string.format(…) 实现了标准化字符串格式设置。将字符串中用大括号分隔的字段替换为相应的参数,再返回结果
string.format_map(mapping) 类似于使用关键字参数调用format,参数以映射方式提供的
string.replace(old, new[, max]) 将字符串中的子串old替换为new,并返回结果;可以设置最大限制次数为max
string.maketrans(x[, y[, z]]) 一个静态方法,创建一个供translate使用的转换表。如只指定一个参数x,它必须是从字符或序数到Unicode序数或None(用于删除)的映射;也可以使用两个表示源字符和目标字符的字符串调用它;还可以提供第三个参数,它指定要删除的字符
string.translate(table) 根据转换表table(这是使用maketrans创建的)对字符串中所有的字符进行转换,并返回结果
string.partition(sep) 在字符串中搜索sep,并返回元组(sep前面部分,sep,sep后面部分)
string.rpartition(sep) 与partition相同,但从右往左
string.split(sep[,maxsplit]) 返回一个列表,其中包含以sep为分隔符对字符串进行划分的结果(如果没有指定sep,将以所有空白符为分隔符进行划分);还可以将最大划分次数限制为maxsplit
string.rsplit(sep[, maxsplit]) 与split相同,但指定了参数maxsplit,从右往左计算划分次数
string.splitlines([keepends]) 返回一个列表,其中包含字符串的所有行;如果参数为True,将包含换行符
string.join(sequence) 与split相反,将string和sequence中所有的元素合并,并返回结果
string.strip([chars]) 将字符串开头和结尾的所有的char字符都删除(默认为所有空白符),并返回结果
string.rstrip([chars]) 将字符串末尾所有的char字符都删除(默认为所有空白符),并返回结果
string.lstrip([char]) 将开头的chars(默认为空白字符,空格,制表符等)都删除,并返回结果
string.startswith(prefix[, start[, end]]) 检查字符串是否以prefix打头;可以将匹配范围限制在索引start和end之间
string.endswith(suffix[, start[, end]]) 检查字符串是否以suffix结尾,还可以使用索引start和end来指定匹配范围

判断字符串是否满足特点条件

方法 描述
string.isalnum() 检查字符串中的字符是否都是字母或数(判断不带符号字符串)
string.isalpha() 检查字符串中的字符是否都是字母
string.isdecimal() 检查字符串中的字符是否都是十进制数
string.isdigit() 检查字符串中的字符是否都是数字
string.isnumeric() 检查字符串中的所有字符是否都是数字字符
string.isidentifier() 检查字符串是否可以用作Python标识符
string.islower() 检查字符串中的字母都是小写的,字符串可以包含非字母的字符
string.isupper() 检查字符串中的字母都是大写的
string.isprintable() 检查字符串中的字符是否都是可打印的
string.isspace() 检查字符串中的字符是否都是空白字符
string.istitle() 检查字符串中位于非字母后面的字母都是大写的,且其他所有字母都是小写的

常用方法举例

center()

>>> 'center'.center(10)'  center  '>>> 'center'.center(1)'center'>>> 'center'.center(10,'-')'--center--'>>>

find()

如果存在则返回第一个找到的索引号,否则返回-1。可以指定字符串搜索的索引范围。

>>> number = '01234567'>>> number.find('1234')1>>> number.find('67')6>>> number.find('678')-1>>> number.find('67',5)6>>> number.find('67',5,6)-1>>>

join()

用于合并序列的元素,作用和split相反。注意元素必须都是字符串。

>>> seq = ['1', '2', '3',]>>> sep = '+'>>> sep.join(seq)'1+2+3'>>> 'cc'.join(seq)'1cc2cc3'>>> seq = [1, 2]>>> 'cc'.join(seq)Traceback (most recent call last):  File "
", line 1, in
'cc'.join(seq)TypeError: sequence item 0: expected str instance, int found>>>

split()

作用与join相反,用于将字符串拆分为序列。

>>> '1cc2cc3'.split('cc')['1', '2', '3']>>> '1 2 3 '.split()['1', '2', '3']>>>

lower()&upper()

>>> 'Cc'.lower()'cc'>>> 'Cc'.upper()'CC'>>>

replace

字符串替换

>>> '3322'.replace('22','tt').replace('33','22').replace('tt','33')'2233'>>>

translate

translate()只能进行单字符替换,一次可以替换多个字符。
替换前使用maketrans()创建转换表
maketrans()可以传入3个参数,前面两个是替换字符的对应关系,必填项;第三个是设置需要删掉字符的可选项。

>>> table = str.maketrans('hw?','HW!',' ')>>> 'hello, world?'.translate(table)'Hello,World!'>>>

format_map

>>> phonebook = {
'张三':'10086','李四':'10010'}>>> "张三的号码是{张三}".format_map(phonebook)'张三的号码是10086'>>> temp = '''{title}

{title}

{text}

'''>>> data = {
'title':'Home Page','text':'hello world'}>>> print(temp.format_map(data))Home Page

Home Page

hello world

>>>

string.isdecimal()、string.isdigit()、string.isnumeric()的区别:

isdigit()

True: Unicode数字,byte数字(单字节),全角数字(双字节)False: 汉字数字,罗马数字,小数Error: 无 isdecimal() True: Unicode数字,全角数字(双字节) False: 罗马数字,汉字数字,小数Error: byte数字(单字节) isnumeric() True: Unicode数字,全角数字(双字节),罗马数字,汉字数字 False: 小数 Error: byte数字(单字节)

string.istitle()用法:

>>> 'A0A1AAaaa'.istitle()False>>> 'A0A1A Aaaa'.istitle()True>>>

转载地址:http://iuiti.baihongyu.com/

你可能感兴趣的文章
Eclipse创建Maven Web项目
查看>>
常见的集合类容器(java)
查看>>
今天进行了cvte的一面,感觉特糟糕,对自己五星差评,以下为总结
查看>>
面试常考的常用数据结构与算法
查看>>
浅谈AVL树,红黑树,B树,B+树原理及应用
查看>>
java JVM的内存区域(运行时数据区域)
查看>>
SSH三大框架的工作原理及流程
查看>>
Spring工作原理及其作用
查看>>
request 获取各种路径
查看>>
深入分析volatile的实现原理
查看>>
TreeMap
查看>>
JVM实用参数系列
查看>>
《Java NIO文档》非阻塞式服务器
查看>>
Java并发性和多线程介绍目录
查看>>
RelativeLayout各个属性
查看>>
分析输入url到页面返回的过程(或者查询返回过程)
查看>>
常用正则表达式大全
查看>>
jdk1.8中ConcurrentHashMap的实现原理
查看>>
JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介
查看>>
JAVA多线程(二)竞态条件、死锁及同步机制
查看>>