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天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
11天前
|
Python
深入理解Python装饰器:从入门到实践####
本文旨在通过简明扼要的方式,为读者揭开Python装饰器的神秘面纱,从基本概念、工作原理到实际应用场景进行全面解析。不同于常规的摘要仅概述内容概要,本文将直接以一段精炼代码示例开篇,展示装饰器如何优雅地增强函数功能,激发读者探索兴趣,随后深入探讨其背后的机制与高级用法。 ####
43 11
|
7天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
7天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
7天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
13天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
51 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
7天前
|
设计模式 缓存 开发框架
Python中的装饰器:从入门到实践####
本文深入探讨了Python中装饰器的工作原理与应用,通过具体案例展示了如何利用装饰器增强函数功能、提高代码复用性和可读性。读者将学习到装饰器的基本概念、实现方法及其在实际项目开发中的实用技巧。 ####
20 3
|
10天前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
9天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
9天前
|
人工智能 数据挖掘 程序员
Python编程入门:从零到英雄
【10月更文挑战第37天】本文将引导你走进Python编程的世界,无论你是初学者还是有一定基础的开发者,都能从中受益。我们将从最基础的语法开始讲解,逐步深入到更复杂的主题,如数据结构、面向对象编程和网络编程等。通过本文的学习,你将能够编写出自己的Python程序,实现各种功能。让我们一起踏上Python编程之旅吧!
下一篇
无影云桌面