python之Character string(实例讲解)


Posted in Python onSeptember 25, 2017

1、python字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串,l

Python不支持单字符类型,单字符也在Python也是作为一个字符串使用。

>>> var1 = 'hello python' #定义字符串
>>> print(var1[0]) #切片截取,从0开始,不包括截取尾数
h
>>> print(var1[0:5])
hello
>>> print(var1[-6:])
python
>>> var2 = var1[0:6]+'world' #截取字符并拼接赋值给新变量
>>> print(var2)
hello world

2、python转义字符

\

:在行尾时,为续行符

\\

:反斜杠转义,输出'\'

\'

:单引号转义

\"

:双引号转义

\b

:退格(backspace)

\n

:换行

\v

:纵向制表符

\t

:横向制表符

\r

:回车

\f

:换页

3、python字符串运算符

(+)拼接,(*)重复,([])索引,([:])切片,(in)成员判断,(not in)非成员判断,(r/R)元素输出字符串

>>> var1 = 'hello'
>>> var2 = 'python'
>>> print(var1+var2) #拼接字符串
hellopython
>>> print(var1*3) #重复输出字符串
hellohellohello
>>> print(var1[0]) #索引字符串
h
>>> print(var1[3:]) #索引切片
lo
>>> 'e' in var1 #判断字符串是否在变量中
True
>>> 'p' not in var1 #判断字符串是否不在变量中
True
>>> print("he\tllo \n") 
he llo 
>>> print(r"he\tllo \n") #原始输出字符串,也就是原始输出转义字符
he\tllo \n

4、格式化字符串

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

python字符串格式化符号:

%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址

格式化操作符辅助指令:

* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

>>> print("ascii:%c"%'s') #格式化输出字符
ascii:s
>>> print("ascii:%c"%'1') #格式化输出数字
ascii:1
>>> print("str:%s"%'character string') #格式化字符串
str:character string
>>> print("str:%d"%888) #格式化整数
str:888
>>> print("str:%f"%888) #格式浮点数
str:888.000000
>>> print("str:%e"%888) #格式化科学计数浮点数
str:8.880000e+02
>>> print("str:%E"%888) #同上
str:8.880000E+02
>>> print("str:%G"%888) #%f和%E的简写
str:888

>>> print("str:%20f"%888.089) #定义20宽度输出
str:  888.089000
>>> print("str:%-20f"%888.089) #用左对齐
str:888.089000  
>>> print("str:%+20f"%888.089) #在正数前显示加号
str:  +888.089000
>>> print("str:%+-20f"%888.089) #左对齐显示加号
str:+888.089000  
>>> print("str:%020f"%888.089) #以0填充默认的空格
str:0000000000888.089000
>>> print("str:%%%20f"%888.089) #在数字前输入%号
str:%  888.089000
>>> print("str:%%%-20f"%888.089) #左对齐输出%号
str:%888.089000  
>>> print("str:%20.3f"%888.089) #显示最小总宽度20,小数点后位数为3位
str:  888.089

自python2.6开始,增加格式化字符串函数str.format():

用法:它通过{}和:来代替%

位置参数不受顺序约束,且可以为{}空,只要format里有相对应的参数值即可,如参数值不够就会报错,参数索引从0开,传入位置参数列表可用*列表

In [27]: '{}+{}={}'.format(1,2,3) #格式化按顺序应用参数值
Out[27]: '1+2=3'
In [28]: '{2}-{1}={0}'.format(1,2,3) #指定顺序应用参数值
Out[28]: '3-2=1'
In [29]: '{0}+{0}={1}'.format(2,3) #指定参数可以重复使用
Out[29]: '2+2=3'
In [30]: '{}+{}={}'.format(2,3) #如不指定顺序,format参数不够就会报错
---------------------------------------------------------------------------
IndexError    Traceback (most recent call last)
<ipython-input-30-29f40e412920> in <module>()
----> 1 '{}+{}={}'.format(2,3)
IndexError: tuple index out of range

In [31]: l1 = [2,4,8] 
In [32]: '{}*{}={}'.format(*l1) #使用列表引用参数值
Out[32]: '2*4=8'

In [33]: dct = {'name':'python','age':20} #定义字典
In [35]: 'welcom to {name},age is {age}'.format(name='qi',age=28) #变量引用
Out[35]: 'welcom to qi,age is 28'

In [36]: 'welcom to {name},age is {age}'.format(**dct) #使用**引用字典参数必须填写key值
Out[36]: 'welcom to python,age is 20'

填充与格式化:
In [53]: "{0: >20}".format("string") #从0位开始已空格填充20宽度左对齐
Out[53]: '  string'

In [54]: "{0:&>20}".format("string")
Out[54]: '&&&&&&&&&&&&&&string'

In [55]: "{0:#>20}".format("string") #使用#号会有个小bug
 ....: 
Out[55]: '##############string'

In [60]: '{0:+<20}'.format("string") #向右对齐填充+
Out[60]: 'string++++++++++++++'

In [61]: '{0:+^20}'.format("string") #剧中对齐填充+
Out[61]: '+++++++string+++++++'

精度与进制:
>>> '{0:.3f}'.format(10/3) #小数位进度格式化
'3.333'
>>> '{0:b}'.format(8) #格式化二进制
'1000'
>>> '{0:o}'.format(9) #格式化八进制
'11'
>>> '{0:x}'.format(26) #格式化十六进制
'1a'
>>> '{0:,}'.format(123456789) #千分位格式化
'123,456,789'

使用索引:
>>> l2 = ['AA',{'bb':'cc'},('d','e')] #列表索引引用
>>> 'outing:{0[0]}'.format(l2) 
'outing:AA'
>>> 'outing:{0[0]},{0[1]}'.format(l2) #将列表当成一个元素,在其中索引值
"outing:AA,{'bb': 'cc'}"

5、python的字符串方法

>>> s = 'i mi to' #将字符串的第一个字符改为大写
>>> s.capitalize()
'I mi to'

>>> s = 'I MI TO' #将字符串所有字符改为小写
>>> s.casefold()
'i mi to'

>>> s.center(15) #将字符串剧中,并用空格将字符串填充长度,如指定长度小于实际长度则没有效果
' I MI TO '

>>> s = 'abcabcabcabc' #返回sub在字符串里出现的次数,start,end为可选参数,决定范围
>>> s.count('a',0,12)
4
>>> s.encode(encoding='utf-8',errors='strict') #以encoding指定的编码格式对字符串进行编码
b'abcabcabcabc'
>>> s.endswith('abc',1,12) #检查字符串是否以sub结尾,是返回True,否返回False,start,end为可选参数,决定范围
True

>>> s = 'a\tb\tc'
>>> s.expandtabs(4) #把字符串的tab字符(\t)转化为空格,如不指定tabsize,默认为8个空格
'a b c'

>>> s.find('b') #检测字符串是否在字符串中,如在则返回索引,否则返回-1,可指定起始值。
2

>>> s='hello python'
>>> s.index('hello') # 类似find(),不同在于如果sub不在字符串中,返回异常
0 

>>> s.isalnum() #有空格返回false
False
>>> s='hellopython'
>>> s.isalnum() #如果字符串至少有一个字符,并且所有字符都是字母或数字则返回True,否则False
True
>>> s.isalpha() #如果字符串至少有一个字符,并且所有字符都是字母则返回True,否则False
True

>>> s = '123'
>>> s.isdigit() #如果字符串只包含数字则返回True,否则返回False
True

>>> s = '123'
>>> s.isdecimal() #如果字符串只包含十进制数字则返回True,否则返回False
True
>>> s= 'ox123'
>>> s.isdecimal()
False
>>> s = '0.33'
>>> s.isdecimal()
False

>>> s = 'abc'
>>> s.islower() #如果字符中至少包含一个能区分大小写的字符,并且这些字符都是小写则返回True,否则返回Flase
True
>>> s = 'Abc'
>>> s.islower()
False

>>> s = 'ABC'
>>> s.isupper() #果字符中至少包含一个能区分大小写的字符,并且这些字符都是大写则返回True,否则返回Flase
True
>>> s = 'ABc'
>>> s.isupper()
False
>>> 

>>> s = '123'
>>> s.isnumeric() #如果字符串只包含数字字符,则返回True,否则返回False
True
>>> s = '123a'
>>> s.isnumeric()
False

>>> 'def'.isidentifier() #判断字符串是否包含该语言的保留字
True

>>> 'aaa'.isprintable() #判断是否可以打印
True

>>> ''.isspace()
False
>>> ' '.isspace() #判断字符串中至少有一个字符且所有都是空格,否则返回false
True
>>> ' a'.isspace()
False

>>> 'Abc'.istitle() #判断是否是标题 格式,可以理解为首字母大写。
True
>>> 'aBC'.istitle()
False

>>> s = '123'
>>> '_'.join(s) #返回一个用指定字符串分隔的字,或者是将指定字符加入到另一个字符中。
'1_2_3'
>>> s.join('abc')
'a123b123c'

>>> s = 'ABC'
>>> s.lower() #返回的是指定字符串的拷贝,并转化成小写
'abc'

>>> s.ljust(10,'+') #可以指定宽度,以及填充字符串,返回的是按宽度,填充字符串格式化后的左对齐的字符串。
'ABC+++++++'

>>> 'aaabccc'.partition('b') #在字符串中查找指定的字符,如找到则返回字符前部分,字符本身和后部分,如没找到则返回字符串和两个空字符串。
('aaa', 'b', 'ccc')
>>> 'aaabccc'.partition('e')
('aaabccc', '', '')

>>> 'aaabccc'.rpartition('b') #与partition一样,但是是从右边开始
('aaa', 'b', 'ccc')
>>> 'aaabccc'.rpartition('c')
('aaabcc', 'c', '')


>>> 'aaaaabbcc'.replace('a','A') #用指定字符串替换指定字符串,如果不指定替换次数,则替换所有
'AAAAAbbcc'
>>> 'aaaaabbcc'.replace('a','A',2)
'AAaaabbcc'

>>> 'aabbcc'.rfind('a') #返回指定子串的最高索引,如果没找到则返回-1,可以指定要开始替换的起始,结束位置。
1
>>> 'aabbcc'.rfind('e')
-1
>>> 'aabbcc'.rindex('a') #与上面的rfind一样,只是如果没找到不是返回-1,而是触发错误
1
>>> 'aabbcc'.rindex('e')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: substring not found

>>> 'aa'.rjust(10,'+') #与ljust()相对应,右对齐
'++++++++aa'
>>> 'aa'.ljust(10,'+')
'aa++++++++'

>>> 'aabccbddbee'.split('b') ##按指定字符串对目标字符串进行切割,可以指定切割次数
['aa', 'cc', 'dd', 'ee']
>>> 'aabccbddbee'.split('b',2)
['aa', 'cc', 'ddbee']

>>> 'aabccbddbee'.rsplit('b',2) #与split作用相同,但是从右侧开始
['aabcc', 'dd', 'ee']

>>> ' aabb '.strip() #移除字符串两侧的指定字符串,默认移除空格,需要注意的是可以指定多个字符
'aabb'
>>> ' aabb'.strip('b')
' aa'
>>> ' aabb'.strip('ab')
' '
>>> 'beaacebb'.rstrip('eb') #与strip一样,从右侧删除指定字符,可以为多个
'beaac'

>>> 'aa\nbb\ncc\ndd'.splitlines() #按换行符切割显示,如没指定keepends=True则将换行符移除。
['aa', 'bb', 'cc', 'dd']
>>> 'aa\nbb\ncc\ndd'.splitlines(keepends=True)
['aa\n', 'bb\n', 'cc\n', 'dd']

>>> 'aabbc'.startswith('a') #判断字符串是否以某个字符开头,可以是多字符
True
>>> 'aabbc'.startswith('b')
False
>>> 'aabbc'.startswith('aab')
True

>>> 'aaBBcc'.swapcase() #转换大小写
'AAbbCC'

>>> 'wend is ok'.title() #标题格式,首字母大写,其它字符小写
'Wend Is Ok'

>>> 'wend is ok'.upper() #将字符全部转换成大写
'WEND IS OK'

>>> 'wend is ok'.zfill(20) #这里的z指zero,用0将字符填充到指定长度
'0000000000wend is ok'

以上这篇python之Character string(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数据结构之二叉树的统计与转换实例
Apr 29 Python
python输出指定月份日历的方法
Apr 23 Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
python实现滑雪游戏
Feb 22 Python
python中def是做什么的
Jun 10 Python
python/golang实现循环链表的示例代码
Sep 14 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
Python 实现二叉查找树的示例代码
Dec 21 Python
python利用正则表达式搜索单词示例代码
Sep 24 #Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 #Python
Django如何实现内容缓存示例详解
Sep 24 #Python
Django查询数据库的性能优化示例代码
Sep 24 #Python
python学习教程之使用py2exe打包
Sep 24 #Python
python数据结构之列表和元组的详解
Sep 23 #Python
Python字符串和字典相关操作的实例详解
Sep 23 #Python
You might like
PHP+DBM的同学录程序(4)
2006/10/09 PHP
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
关于php循环跳出的问题
2013/07/01 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
php判断目录存在的简单方法
2019/09/26 PHP
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
HTML的select控件美化
2017/03/27 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
python根据路径导入模块的方法
2014/09/30 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Python socket模块方法实现详解
2019/11/05 Python
Python笔记之工厂模式
2019/11/20 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
python绘图模块之利用turtle画图
2021/02/12 Python
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
培训主管的岗位职责
2013/11/23 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
全民创业工作总结
2015/08/13 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
Python django中如何使用restful框架
2021/06/23 Python