python字符串的方法

字符串的查找

字符串的查找 count 计数功能,返回自定字符在字符串当中的个数
find 查找,返回从左第一个指定字符的索引,找不到返回-1
rfind 查找,返回从右第一个指定字符的索引,找不到返回-1
index 查找,返回从左第一个指定字符的索引,找不到报错
rindex 查找,返回从右第一个指定字符的索引,找不到报错
>>> mystr = “hello world python”

mystr.count(“o”) #统计o出现的次数
3

mystr.find(“world”)#find从左边指定索引的查找
6

mystr.rfind(“world”)#rfind从右边指定索引的查找 如果查找不到返回-1
6

mystr.find(“hello”)
0

mystr.find(“python”)# index和find的查找方式一样
12

mystr.index(“world”)
6

mystr.rindex(“world”)
6
#index和find的区别是 find找不到返回-
1 index找不到报错

3.2.3.2 字符串的拆分

字符串的分割 partition 把mystr以str分割成三部分,str前,str自身和str后

字符串的分割 splitlines 按照行分隔,返回一个包含各行作为元素的列表,按照换行符分割
字符串的分割 split 按照指定的内容进行分割
NormalText Code
>>> mystr = “hello world python and php”

mystr.partition(“world”)
('hello ‘, ‘world’, ’ python and php’)

mystr.partition(“hello”)
(’’, ‘hello’, ’ world python and php’)

mystr = “hello \n world \n python \n and \n php”
print(mystr)
hello
world
python
and
php

mystr = “hello world python and php”
mystr.splitlines()
[‘hello world python and php’]

字符串的替换

字符串的替换 replace 从左到右替换指定的元素,可以指定替换的个数,默认全部替换
translate 按照对应关系来替换内容 from string import maketrans

>>> str = "hello world"

str.replace(“h”,“w”)
‘wello world’

makestrans()用法
语法: str.maketrans(intab, outtab]);
Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,
第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
注:两个字符串的长度必须相同,为一一对应的关系。
str.maketrans(intab,outtab[,delchars])
· intab – 需要转换的字符组成的字符串。
· outtab – 转换的目标字符组成的字符串。
intab = “hecd”# test_str 值
outtab = “3723” #需要编的值
str_trantb = str.maketrans(intab,outtab)
test_str = “hello world”
print(test_str.translate(str_trantb))
intab = “abcdew” # 需要转换成字符组成的字符串
outtab = “12ej66” # 转换的目标字符组成的字符串
#两个字符串的长度必须相同,为一一对应的关系
str_trantab = str.maketrans(intab,outtab)
方法用于映射的转换表,对于接受两个参数的最简单的调用方式
#第一个参数是字符串,表示需要转化的字符,第二个参数也是字符串,表示转换的目标
test_str = “hello world” # 需要转换的内容
print(test_str.translate(str_trantab)) # 打印出需要转换的内容
#3.2.3.4 字符串的修饰
字符串的修饰 center 让字符串在指定的长度居中,如果不能居中左短右长,可以指定填充内容,默认以空格填充
ljust 让字符串在指定的长度左齐,可以指定填充内容,默认以空格填充
rjust 让字符串在指定的长度右齐,可以指定填充内容,默认以空格填充
zfill 将字符串填充到指定的长度,不足地方用0从左开始补充
format 按照顺序,将后面的参数传递给前面的大括号
strip 默认去除两边的空格,去除内容可以指定
rstrip 默认去除右边的空格,去除内容可以指定
lstrip 默认去除左边的空格,去除内容可以指定

>>> str = "我爱北京天安门"

str.center(50)
’ 我爱北京天安门 ’

str.ljust(50)
'我爱北京天安门 ’

str.rjust(50)
’ 我爱北京天安门’

str.zfill(50)
‘0000000000000000000000000000000000000000000我爱北京天安门’

test = str.center(50)
test
’ 我爱北京天安门 ’

test.rstrip()
’ 我爱北京天安门’

test.strip()
‘我爱北京天安门’

test.lstrip()
'我爱北京天安门 ’

python = “{} is {}”
python.format(“hello”,“world”)
‘hello is world’

(1).字符串格式化
format()用法:
相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’
1、使用位置参数

2、使用关键字参数

3、填充与格式化
(1):[填充字符][对齐方式 <^>][宽度]
< 表示 向左对齐, ^ 表示居中对齐, >表示向右对齐

4、精度与进制
百分号格式:
格式 描述
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)已过时
%o 整数(八进制)
%x 整数(十六进制)
%X 整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中

练习1:自我介绍,姓名小米,年龄 18, 身高1.75米,体重70kg,目前的学习进度为80%。使用字符串格式化将内容输出到控制台。

字符串的变形

字符串的变形 upper 将字符串当中所有的字母转换为大写
lower 将字符串当中所有的字母转换为小写
swapcase 将字符串当中所有的字母大小写互换
title 将字串符当中的单词首字母大写,单词以非字母划分
capitalize 只有字符串的首字母大写
expandtabs 把字符串中的 tab 符号(’\t’)转为空格,tab 符号(’\t’)默认的空格数是 8

字符串的判断

字符串的判断 isalnum 判断字符串是否完全由字母或数字组成
isalpha 判断字符串是否完全由字母组成
isdigit 判断字符串是否完全由数字组成
isupper 判断字符串当中的字母是否完全是大写
islower 判断字符串当中的字母是否完全是小写
istitle 判断字符串是否满足title格式
isspace 判断字符串是否完全由空格组成
startswith 判断字符串的开头字符,也可以截取判断
endswith 判断字符串的结尾字符,也可以截取判断
split 判断字符串的分隔符切片

python字符串的编码

encode是编码,将字符串转换成字节码。str–>byte
decode是解码 ,将字节码转换成字符串。 byte–>str
参考彻底弄懂Unicode 编码.doc文档。

Unicode是一个规则,UTF-8是具体的实现。

编码方式 ASCII Unicode UTF-8
二进制表示字母‘A’ 01000001 00000000 01000001 01000001
二进制表示中文‘中’ 01001110 00101101 11100100 10111000 10101101
十六进制形式 \u4e2d b\xe4\xb8\xad
编码范围 只有英文 所有语言 所有语言
一个字符占字节数 1 2(少数偏僻字4) 英文1,中文3(少数偏僻字4-6)
特点 统一,英文就在ASCII前面补一个字节 节省,英文跟ASCII一样只有一个字节
用处 内存中,服务器中,比较统一 保存在硬盘时,传输时,需要节省
编码方式对比:

python字符串是一种数据类型,但是字符串比较特殊,它有一个编码的问题。
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。
由于计算机是英语国家发明的,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母a的编码是97。
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。
因此,俗称“万国码”的Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。
现在,捋一捋ASCII编码和Unicode编码的区别:
ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A用ASCII编码是十进制的65,二进制的01000001;
字符0用ASCII编码是十进制的48,二进制的00110000,注意字符’0’和整数0是不同的;
汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。
如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001。
新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:
UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。
搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。
由于python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串’ABC’在Python内部都是ASCII编码的。Python提供了ord()和chr()函数,可以把字母和对应的数字相互转换,len()函数可以查字符串的长度:
H:\Python基础>python
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.

ord(“A”)
65

chr(65)
‘A’

print(u"中国")
中国

print(“中国”)
中国

u"中国"
u’\u4e2d\u56fd’

len(“中国”)
4

len(u"中国")
2

len(u"abc")
3

len(u"list")
4

len(“百度”)
4

len(“百度新闻”)
8

u"百度百度"
u’\u767e\u5ea6\u767e\u5ea6’

len(u"\u767e\u5ea6\u767e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值