Python字符串(第七章)

1. 字符串(str)的概述

python中字符串属于不可变有序序列,由 '  ' 、 "" 、  ''' '''作为定界符,不两只的定界符可以相互嵌套

2.字符串编码格式

ASCII码采用1个字节对字符进行编码

UTF-8对全世界所有国家用到时的字符进行了编码,以1个字节表示英语字符(兼容ASCII),以3个字符表示中文。Python  3.x默认使用UTF-8编码格式,支持中文,在统计字符串长度时,无论是一个数字,英文字母,还是一个汉字,都按一个字符统计计算。

>>>s='中国'

>>>len(s)

2

3. 转义字符与原始字符串

这里只介绍常用的

\\ 一个单斜线
\b 退格符
\n 换行
\r 回车
\f 换页符
\t 水平制表
\v 垂直制表
\uhhhh 4位16进制数对应Unicode字符
\ooo 3位八进制数对应的字符

\xhh

 2位16进制数对应的字符

注:这里介绍地址的两种写法

str_a='C:\Windows\notedpad.exe'             #错误写法
print(str_a)
str_b='C:\\Windows\\notedpad.exe'           #写法1
print(str_b)
str_c=r'C:\Windows\notedpad.exe'            #写法2,对任何转义字符都不转换
print(str_c)

4. 字符串的格式化

a.   转义字符的格式化(这里只介绍常用的)

格式字符 说明
%% 格式为个%符号
%s 格式化为字符串
%c 单个字符
%d,%i 十进制
%o 八进制
%x 十六进制
%e,%E 指数 
%f,%F 浮点数
%% 格式为个%符号

用法:

str_x=123456
print('%o' % str_x)                         #转化为八进制整数
print('%x' % str_x)                         #转化为十六进制整数
print('%d,%c' % (68,68))                    #多个转换

b. 使用format()方法格式化

该方法可以对b(二进制)、c(Unicode)字符、d(十进制)、o(八进制)、x(十六进制)、等进行格式化,还增加了使用符号作为分隔符来提高数字的可读性

语法:(其中花括号里为输出部分)

' { 格式 } '  . format(字符串)

例:

str_f=1/3
print('{0:.3f}'.format(str_f))              #保留3位小数
print('{0:%}'.format(3.5))                  #转为百分数
print('{0:.2%}'.format(3.5))                #只保留2位小数
tuple_a=(5,8,13)
print('x:{0[0]};y:{0[1]};z:{0[2]}'.format(tuple_a))
print('{0:_},{0:_x}'.format(100000000))     #_表示对整数从右向左3位一分,第二个转换为16进制3位一分

 注:上面的方法需要考虑python 3.6版本以上的支持

c. 格式化字符串常量

语法:

f ' { 字符串常量的值:{显示字符串的总宽度 } . { 精度包含了整数的部分 } } '

例:

print(f'{11/3:{10}.{4}}')                   #总长为10,含整数部分精度为4
print(f'值为:{14/2:{5}.{4}}')

5. 字符串常用方法和操作

1.  find()和rfind()

find()查找一个字符串在另一个字符串指定范围(默认是整个字符串)首次出现的位置

rfind()查找最后出现的位置

如果不存在的返回-1

str_a='12,45,7,90,2,45,7'
print(str_a.find('7',5))      #从第五个开始(包含了分隔符,从0开始)
print(str_a.rfind('90'))      #从尾部开始,下标还是从左向右从0开始
print(str_a.find('z'))        #返回-1,不存在

2.  index()和rindex()

index()用来返回一个字符串在另一个字符串范围首次出现的位置

rindex()返回最后一次出现的位置

如果不存在的话抛出异常

print(str_a.index('90'))

注:以上四种我也不清楚有什么不同,好像就只有不存在时,返回不同 

3.  count()

count()用来返回一个字符串在另一个字符串中出现的次数,不存在的话返回0

print(str_a.count(','))

4.  split()和 rsplit()

split()用来指定字符的分隔符,从左端开始分隔成字符串返回包含分隔结果的列表

rsplit()这个是从右开始

print(str_a.split('4'))            #并把指定的分隔符变为,

注: 如果不指定分隔符的话,则从字符串中的任何空白符号(包括空格、换行符、制表符等)的连续出现都被认为是分隔符,并自动删除两端的空白字符

5.  partition()和rpartition()

partition()用来指定字符串为分隔符串分隔成3部分(分隔符之前的字符串、分隔符字符串、分隔符之后的字符串),从左到时右

rpartition()从右到左

print(str_a.partition('0'))

注: 如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串

6.   join()

join()用来将个多个字符串进行连接,并在相邻字符串之间插入指定字符串,返回新的字符串

str_b='12345689'
print(':'.join(str_b))

7. 

lower()字符串转换为小写字符串

upper()字符串转换为大写字符串

capitalize()将字符串首字母变为大写

title()将每个单词的首字母变大写

swapcase()大小写互换

str_c='What is  your Name?'
print(str_c.lower())        #转小写
print(str_c.upper())        #转大写
print(str_c.capitalize())   #首字符串大写
print(str_c.title())        #单词首字大写
print(str_c.swapcase())     #大小写互换

 

replace()用来替换字符串中指定字符或子字符串的所有重复出现,每次只能替换一个字符或一个字符串

maketrans()用来生成字符映射表

translate()用来根据映射表中定义的对应关系转换字符串并替换其中的字符

print(str_c.replace('is','are'))                        #前面的参数是要修改的值,后面的参数是,要修改为的的值
print(str_c.translate(''.maketrans('abcde','ABCDE')))

8.  strip()、rstrip()、lstrip()

strip()删除两端的指定字符

rstrip()删除右侧的指定字符

lstrip()删除左侧的指定字符

print(' 1 hello world 1 '.strip('1'))             #strip()不指定参数,就是删除空白字符
print('aaa hello world aaa'.rstrip('a'))          #删除右侧字符
print('aaa hello world aaa'.lstrip('a'))          #删除左侧字符

注:空白字符指:制表符,换行符,回车符,空格等 

9.  startswith()和endswith()

startswith()检测是否以指定字符串开始

endswith()检测是否以指定字符串结束

str_d='A is gilr .'
print(str_d.startswith('A'))                        #结果返回True
print(str_d.endswith('.'))
print(str_d.startswith('A',0,5))                    #可指定起始位置与结束位置

10. 

isalnum()

isalpha()测试全部是否为英文字母返回True

isdigit()测试全部是否是数字

isspace()测试是否是全部为空白字符

isupper()测试是否是大写字母

islower()测试是否是小写字母

11.对字符串进行排版

center()居中对齐

ljust()左对齐

rjust()右对齐

print("hello world".center(20))                     #指定长度
print("hello world".ljust(20,'-'))                  #指定长度,其余部分-填充,默认空格
print("hello world".rjust(20,'-'))    

结果:

    hello world     
hello world---------
---------hello world

6.字符串内置函数

len()字符串长度

max()最大字符

min()最小字符

reversed()翻转字符

sorted()字符串排序

eval()计算字符串的值

print(len("abc"))
print(max('abcd'))
print(min('abcd'))
print(sorted('acdefdlie'))              #返回的是列表
print(''.join(reversed('acdefdlie')))
a=1
b=2
print(eval('a+b'))                      #要求ab变量已经存在

结果:

3
d
a
['a', 'c', 'd', 'd', 'e', 'e', 'f', 'i', 'l']
eildfedca
3
 

7.中英文分词

这里需要安装两个包jieba或snownlp

然后需要导入jieba和snownlp两个包 ( 如果报错,需要对这两个包进行加载,在横线上点击会有提示 )

1. 中文分词

import jieba
x_str='我是一个中国人,我是一个学生,我是一个孩子'
#使用默认词库分
print('jieba分词:',list(jieba.cut(x_str)))

import  snownlp
print('snownlp分词:',snownlp.SnowNLP(x_str).words)

结果:

jieba分词: ['我', '是', '一个', '中国', '人', ',', '我', '是', '一个', '学生', ',', '我', '是', '一个', '孩子']
snownlp分词: ['我', '是', '一个', '中国', '人', ',', '我', '是', '一个', '学生', ',', '我', '是', '一个', '孩子']

 2. 汉字到拼音的转换

from pypinyin import lazy_pinyin,pinyin
print(lazy_pinyin("拼音"))
#带声调的拼音
print(lazy_pinyin("拼音",1))
#返回多音字的所有读音
print(pinyin("拼音",heteronym=True))

注:1表示带声调,2表示字母的声调后根数字表示,3.表示返回拼音首字母

发布了59 篇原创文章 · 获赞 3 · 访问量 4757

猜你喜欢

转载自blog.csdn.net/CDZAllier/article/details/101284264