Python入门(五)字符串各种问题总结

简介: 留作查阅!较为全面的总结了字符串中会遇到的问题,很多东西还要在实践中慢慢形成自己的风格。

1.字符串中使用引号

  • 非成对出现的引号,用转义字符"\":
>>> str1='Where\'re you now?' 
>>> print(str1)  
Where're you now?
  • 成对出现的引号:
    1)单引号中可用双引号
>>> str2='"DJY"'  
>>> print(str2)
"DJY"

2)双引号中可用单引号

>>> str3="'DJY'"
>>> print(str3)
'DJY'

3)三引号可保持字符串原来的格式(从转义字符中被解救的感觉)

>>> str4='''DJY
FXW'''
>>> print(str4)
DJY
FXW
>>> str5="""DJY
FXW"""
>>> print(str5)  
DJY
FXW
  • 如果想在字符串中既有成对单引号又有成对双引号:
>>> str61="'djy'"
>>> str62='"fxw"'
>>> print(str61+str62)
'djy'"fxw"

2.字符串中显示转义字符

  • 如果想在字符串中显示少量转义字符"\":
>>> str1='DJY\\FXW'
>>> print(str1) 
DJY\FXW  

此种方法常用在:
发出系统响铃声 \a,
退格符 \b,
换行符 \n,
横向制表符(TAB) \t,
纵向制表符 \v,
回车符 \r,
换页符 \f,
八进制数代表的字符 \o,
十六进制数代表的字符 \x,
其它的字符以普通格式输出 \other
空字符 \0,
反斜杠 \。

  • 如果想在字符串中显示大量转义字符"\":
>>> str2=r'C:\DJY\djy\d\j\y'  #r是来自于原始字符串(raw strings)
>>> print(str2) 
C:\DJY\djy\d\j\y  

若还想以结尾,只需改为:

>>> str2=r'C:\DJY\djy\d\j\y\\' 
>>> print(str2) 
C:\DJY\djy\d\j\y\  

3.字符串运算符

字符索引[]

>>> str1='python2048'
>>> str1[6] 
‘2’
>>> str1[-1] 
'8'

字符串分片[:]

>>> str1='python2048'
>>> str1[6:10] 
'2048'
>>> str1[:6]
'python'

字符串连接+

>>> str1='python'
>>> str2='2048'
>>> str1+str2
'python2048'

字符串重复*

>>> str1='python2048'
>>> str1*3 
'python2048python2048python2048'

4.字符串格式化

字符串格式化符号

  • 格式化字符及其ASCII码:%c
>>> '%c %c %c'%(97,98,99) 
'a b c'
  • 格式化字符串:%s
>>> '%s'%'djy' 
'djy'
  • 格式化整数:%d
>>> '%d+%d=%d'%(1,2,1+2) 
'1+2=3'
  • 格式化无符号八进制、十六进制数(小写、大写):%o、%x、%X
>>> '%X'%(10)
 'A'
  • 格式化定点数,可设置小数点后的精度:%f
>>> '%f'%99.09584
'99.095840'
  • 用科学计数法格式化定点数(小写、大写):%e、%E
>>> '%e'%99.09584
'9.909584e+01'
  • 根据值的大小决定使用%f还是%e(%E):%g、%G
>>> '%G'%99.09584
'99.0958'

格式化操作符辅助指令

  • 显示最小总宽度m,小数点后的位数n:m.n
>>> '%9.2f'%99.09584
'    99.10'
  • 左对齐:-
>>> '%-20f'%2
'2.000000            '
  • 在正数前面显示加号(+):+
>>> '%+f'%2
'+2.000000'
  • 在八进制数前面显示零('0'),在十六进制数前面显示'0x'或'0X'
>>> '%#o'%10
'0o12'
  • 显示的数字前面填充'0'取代空格:0
>>> '%020f'%10
'0000000000010.000000'

5.字符串的BIF

  • 把字符串的第一个字符改成大写:capitalize()
>>> str1='python精英群'
>>> str1.capitalize()
'Python精英群'
  • 把整个字符串的所有字符改为小写:casefold()
>>> str2='PYTHON2048'
>>> str2.casefold()
'python2048'
  • 将字符串居中,并用空格填充至长度width形成新字符串:center(width)
>>> str3='python2048'
>>> str3.center(20)
 '     python2048     '
  • 返回sub在字符串里出现的次数,start和end参数表示范围:count(sub[,start[,end]])
>>> str4='djydjydjy'
>>> str4.count('jy',2,9)
2
  • 检查字符串是否以sub子字符串结束,如果是返回True,否则返回False:endswith(sub[,start[,end]])
>>> str5='djydjydjy'
>>> str5.endswith('jy',2,9)
True
  • 把字符串中的tab符号(t)转换为空格,如不指定参数,默认空格数tabsize=8:expandtabs([tabsize=8])
>>> str6='djy\tpython\tfxw'
>>> str6.expandtabs()
'djy     python  fxw'
  • 检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1:find(sub[,start[,end]])
>>> str7='djyfxw'
>>> str7.find('c') 
-1
  • 检测sub是否包含在字符串中,如果有则返回索引值,否则会出现Error:index(sub[,start[,end]])
>>> str8='djyfxw'
>>> str8.index('c')   #发生Error
ValueError: substring not found 
  • 如果字符串中所有字符都为字母或数字,则返回True,否则返回False:isalnum()
>>> str9='djy&fxw'
>>> str9.isalnum() 
False
  • 如果字符串中字符都为字母,则返回True,否则返回False:isalpha()
>>> str10='djy&fxw'
>>> str10.isalpha()
False
  • 如果字符串为Unicode数字、全角数字(双字节)则返回True,罗马数字、汉字数字返回Flase, byte数字(单字节)会出现Error:isdecimal()
>>> str11='2048'
>>> str11.isdecimal()
True
  • 如果字符串为Unicode数字、byte数字(单字节)、全角数字(双字节)、罗马数字则返回True, 汉字数字返回Flase:isdigit()
>>> str12='2048'
>>> str12.isdigit()
True
  • 如果字符串为Unicode数字、全角数字(双字节)、罗马数字、汉字数字则返回True,byte数字(单字节)会出现Error:isnumeric()
>>> str13='2048'
>>> str13.isnumeric()
True
  • 如果字符串中字符都是小写,则返回True,否则返回Flase:islower()
>>> str14='奥特曼超人'
>>> str14.islower()
False
  • 如果字符串中字符都是大写,则返回True,否则返回Flase:isupper()
>>> str15='奥特曼超人'
>>> str15.isupper()
False
  • 如果字符串只包含空格,则返回True,否则返回Flase:isspace()
>>> str16='    '
>>> str16.isspace()
True 
  • 如果字符串是标题化(所有单词都是以大写开始,其余字母均小写),则返回True,否则返回Flase:istitle()
>>> str17='Hello,Djy'
>>> str17.istitle() 
True 
  • 以字符串为分隔符,插入到sub中所有的字符之间:join(sub)
>>> str18='DJY'
>>> str18.join('fxw')
'fDJYxDJYw'
  • 返回一个左对齐的字符串,并用空格填充至长度为width的新字符串:ljust(width)
>>> str19='DJY'
>>> str19.ljust(20)
'DJY                 '
  • 将字符串中所有的大写字母转化为小写:lower()
>>> str20='DJY'
>>> str20.lower()
'djy'
  • 去掉字符串左边的所有空格:lstrip()
>>> str21='       DJY'
>>> str21.lstrip()
'DJY'
  • 找到子字符串sub,把字符串分成一个三元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回('原字符串',","):partition(sub)
>>> str22='djyandfxw'
>>> str22.partition('and')
 ('djy', 'and', 'fxw')
  • 把字符串中的old子字符串替换成new子字符串,如果指定count 则替换不能超过count次:replace(old,new[,count])
>>> str23='djyandfxw'
>>> str23.replace('a','d',1)
'djydndfxw'
  • 从右开始检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1(与find()类似):rfind(sub[,start[,end]])
  • 从右开始检测sub是否包含在字符串中,如果有则返回索引值,否则会出现Error(与index()类似):rindex(sub[,start[,end]])
  • 返回一个右对齐的字符串,并用空格填充长度至width的新字符串:rjust(width)
>>> str24='djyandfxw'
>>> str24.rjust(20) 
'           djyandfxw'
  • 从右开始找子字符串sub,把字符串分成一个三元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回('原字符串',",")(与partition(sub)类似):rpartition(sub)
  • 删除字符串末尾的所有空格:rstrip()

    >>> str25='djyandfxw           '
    >>> str25.rstrip()
    'djyandfxw'
  • 不带参数默认是以空格为分隔符切片为字符串,如果有设置maxsplit参数,则仅分割maxsplit个子字符串,返回切片后的子字符串拼接的列表:split(sep=None,maxsplit=-1)
>>> str26='djy python 2048 fxw'
>>> str26.split() 
['djy', 'python', '2048', 'fxw']
  • 按'n'分隔,返回一个包含各行作为元素的列表,如果指定keepends参数,则返回前keepends行:splitlines(([keepends]))
>>> str27='djy\npython\n2048\nfxw'
>>> str27.splitlines(2) 
['djy\n', 'python\n', '2048\n', 'fxw']
  • 检查字符串是否以prefix开头,是则返回True,否则返回False:startswith(prefix[,start[,end]])
>>> str28='djywanan'
>>> str28.startswith('d')
True
  • 删除字符串前边和后边所有的空格,chars参数可以设置删除的字符:strip([chars])
>>> str29='djy wanan'
>>> str29.strip('d')
'jy wanan'
  • 翻转字符串中的大小写:swapcase()
>>> str30='DJYwanan'
>>> str30.swapcase()
'djyWANAN'
  • 返回标题化(所有的单词都是以大写开始,其余字母均为小写)的字符串:title()
>>> str31='DJY wanan'
>>> str31.title()
'Djy Wanan'
  • 根据table的规则(可以由str.maketrans('a','b')定制)转换字符串中的字符:translate(table)
>>> str32='DJYDJYDJY'
>>> str32.translate(str.maketrans('DJY','FXW'))
'FXWFXWFXW'
  • 将字符串中所有的小写转化为大写:upper()
>>> str33='djywanan'
>>> str33.upper()
'DJYWANAN'
  • 返回长度为width的字符串,原字符串右对齐,前面用0填充:zfill(width)
>>> str34='djywanan'
>>> str34.zfill(20)
'000000000000djywanan'
  • 将字符串格式化:format()
    1)使用位置参数:
>>> 'I like {1},{0},in particular {2}.--{2}'.format('music','dance','DJY')
'I like dance,music,in particular DJY.--DJY'
>>> list1=['music','dance','DJY']
>>> 'I like {},{},in particular {}'.format(*list1)
'I like music,dance,in particular DJY'

位置参数不受顺序约束,只要format里有对应的参数值即可为{},参数索引从0开,传入位置参数列表可用*列表。
2)使用关键字参数:

>>> hash1={'music':'psychedelic rock','dance':'Latin','name':'DJY'}
>>> 'I like {music},{dance},in particular {name}'.format(**hash1) 
'I like psychedelic rock,Latin,in particular DJY'
>>> hash1={'music':'psychedelic rock','dance':'Latin','name':'DJY'}
>>> 'I like {music},{dance},in particular {name}'.format(music='classical music',dance='tango',name='FXW')
'I like classical music,tango,in particular FXW'

关键字参数必须要一一对应,以**字典格式用字典输入关键字参数。
3)如果想输出{}

>>> '{{0}}'.format('djy')
'{0}'

4)精度与进制转换:

>>> '{0:.2f}{1}'.format(1/2,'km')
'0.50km'
>>> '{0:x}'.format(10)  #转换成十六进制
'a' 
>>> '{:,}'.format(123456789)  #千分位格式化
'123,456,789' 

5)填充与格式化:{填充字符}

>>> '{0:*>10}'.format(20)  #<左对齐,>右对齐,=居中
'********20'
  • 以encoding指定的编码格式对字符串进行编码,以decoding指定的解码码格式对字符串进行解码:encode(encoding='utf-8',errors='strict')、decode(encoding='utf-8',errors='strict')
    Python3中,以str型代替了unicode类型,经过编码后变为了字节类型(bytes),而但是两个函数的使用方法不变:
>>> a='djy'  
>>> a_utf8=a.encode("UTF-8")  #以UTF-8编码对a进行编码,获得bytes类型对象
>>> a_utf8.decode("UTF-8",'strict')  #对a_utf8进行解码得到的结果,将无法还原原来的字符串内容
'djy'

END!

目录
相关文章
|
10天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
27天前
|
存储 安全 API
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
73 0
|
2天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
3天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
7天前
|
JavaScript 前端开发 API
游戏开发入门:Python后端与Vue前端的协同工作方式
【4月更文挑战第11天】使用Python后端(Flask或Django)和Vue.js前端开发游戏变得流行,能提高开发效率和可维护性。本文指导如何构建这样的项目,包括设置环境、创建虚拟环境、搭建后端API及前端Vue组件,强调前后端协作和API接口的重要性。这种架构促进团队合作,提升代码质量和游戏体验。
|
9天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。
|
10天前
|
Python
171: 字符串的倒序(python)
171: 字符串的倒序(python)
|
11天前
|
机器学习/深度学习 数据可视化 数据挖掘
利用Python进行数据分析与可视化:从入门到精通
本文将介绍如何使用Python语言进行数据分析与可视化,从基础概念到高级技巧一应俱全。通过学习本文,读者将掌握Python在数据处理、分析和可视化方面的核心技能,为实际项目应用打下坚实基础。
|
27天前
|
存储 算法 数据挖掘
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
50 0
|
27天前
|
存储 机器学习/深度学习 数据安全/隐私保护
【Python 基础教程 24】全面入门Python面向对象编程:深度探索与实战教程
【Python 基础教程 24】全面入门Python面向对象编程:深度探索与实战教程
76 0

热门文章

最新文章