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!

目录
相关文章
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
1天前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
1天前
|
机器学习/深度学习 人工智能 算法框架/工具
Python入门:1.Python介绍
Python是一种功能强大、易于学习和运行的解释型高级语言。由**Guido van Rossum**于1991年创建,Python以其简洁、易读和十分工程化的设计而带来了庞大的用户群体和丰富的应用场景。这个语言在全球范围内都被认为是**创新和效率的重要工具**。
Python入门:1.Python介绍
|
1天前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
1天前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
1天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
1天前
|
知识图谱 Python
Python入门:4.Python中的运算符
Python是一间强大而且便捷的编程语言,支持多种类型的运算符。在Python中,运算符被分为算术运算符、赋值运算符、复合赋值运算符、比较运算符和逻辑运算符等。本文将从基础到进阶进行分析,并通过一个综合案例展示其实际应用。
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
47 2

热门文章

最新文章

推荐镜像

更多