每日总结-day8-字符串

一、字符串和字符

1.什么叫字符串(str)
字符串是容器型数据(元素只能是字符),将' '/" "/''' '''/""" """作为容器标志,
容器中的元素全是字符
不可变的(不支持增删改),有序的(支持下标操作)

2.字符串中的元素 - 字符
python中只有字符的概念,没有对应的数据类型。引号只有一个元素的字符串可以看成一个字符
字符串又叫字符集
1)字符串中的字符 - 原则上任何可以通过键盘输入或者从其他地方复制粘贴的所有符号都可以作为字符
a.普通字符:在字符串中能够代表符号本身的字符(没有特殊意义和特殊功能的符号)
b.转义字符:在字符串中有特殊意义和特殊功能的符号的组合,一般是以\开头的
常用转义字符
\n - 换行
\ ' - 表示'本身
\ " - 表示"本身
\t - 表示一个缩进(tab)
\ \ - 表示一个\
\u四位的16进制数 - 获取4位十六进制数作为编码值对应的字符
注意:所有的转义字符的长度都是1
c.编码字符
2)阻止转义:在字符串的最前面加r/R可以让当前字符串中所有的转义字符失效(所有的的符号在字符串中都表示这个符号本身)
str1 = r'\tasd\n'123'

3.字符编码
计算机不能直接存储字符(符号),只能存储数字,为了能够存储字符,把每个字符关联了一个固定的数字(这个固定的数字就是对应的字符的编码)
字符和数字的一一对应关系就是编码表
常用的编码表:ASCII码表和Unicode编码表(python)
1)ASCII码表 - 在计算机中采用一个字节保存一个字符(128个字符),字符包含了所有的字母、数字和美国常用符号
0~9:编码值从48开始一次增加到57
大写字母的编码值(65~90) < 小写字母的编码值(97~122)
大写字母和小写字母不是紧挨着的
2)Unicode编码表是ASCII码表的扩展,包含了世界上所有的国家所有的语言对应的符号(总共有65536个符号)
ASCII码:0~127
中文编码值范围:4E00~9FA5

1.编码字符: \u四位十六进制编码值

str1 = 'abc\u50ff'
print(str1)     # abc僿

2.chr(编码值) - 获取编码值对应的字符

num = 0
for x in range(0x4E00, 0x9FA5+1):
    print(chr(x), end=' ')
    num += 1
    if num % 30 == 0:
        print()

3.ord(字符) - 获取指定字符对应的编码值

print(hex(ord('王')), hex(ord('祥')))  # 0x738b 0x7965

二、字符串操作

1.查 - 获取字符(和list获取元素的方式一样)

1)获取单个字符:字符串[下标]
注意:一个空格是一个字符;tab键是4个4空格,对应4个字符;\t对应一个字符

str1 = '\thello Python!'
print(str1[-2])  # n
print(str1[2])  # e

2)切片:字符串[开始下标:结束下标:步长]

print(str1[2:])  # ello Python!
print(str1[1:-1:2])  # hloPto
print(str1[:3:-1])  # !nohtyP ol

3)遍历:
a.直接遍历元素,
b.通过下标遍历元素,
c.枚举(enumerate)

for index, item in enumerate(str1):
    print(index, item)

2.相关操作
1)运算符:
a.+,* —— 和list相同

b.==,!=,is

c.>,<,>+,<+
字符串1 > 字符串2
字符串比较大小比较的是字符串编码值的大小
应用:
判断字符是否是大小写字母
判断是否是中文: '\u4e00' <= char <= '\u9fa5'
判断时候是数字: '0' <= char <= '9'

2)in / not in
字符串1 in 字符串2 -> 判断字符串2中是否包含字符串1

3)相关函数:len,str,sorted,reverse
a.len(字符串)
b.str(数据) - 所有的数据都可以转换成字符串;直接将原数据的打印值加引号
c.sorted(字符串) - 按字符串编码值的大小排序,生成新的的列表

str1 = 'asdPsdqE5'
print(sorted(str1))  # ['5', 'E', 'P', 'a', 'd', 'd', 'q', 's', 's']
print(''.join(sorted(str1)))  # 5EPaddqss

三、格式字符串

1.格式占位符
a.语法:包含格式占位符的字符串 % (值1, 值2, 值3,...)
b.说明:
格式占位符 - 格式占位符有哪些是固定,使用的时候和字符串中变化的数据的类型相关
%s - 字符串(从可读性来说,任何类型都可以用%s站位)
%d - 整数;
%-Nd - 整数,N约束数字最后的长度,如果不够后面补空格
%Nd - 整数,N约束数字最后的长度,如果不够前面补空格
%f - 浮点数
%.Nf - 浮点数,N约束小数点N后的小数位数(会四舍五入),不约束默认为6位
% - 固定写法
() - 固定写法;如果值发的个数是1可以省略
值 - 任何有结果的表达式,值的个数、类型和前面占位符的个数以及类型保持一致

name = 's'
age = 12
print("我是%s,今年%d岁,我有%.2f元" % (name, age, 100))  # 我是s,今年12岁,我有100.00元

2.format
一个带有{}的字符串.format(值1, 值2, 值3,...)

# 用法1

print('我是{},今年{}岁'.format('雨天', 18))  # 我是雨天,今年18岁

# 用法2:{N} N从0开始一次增加,分别表示format中第0个值,第1个值,...

print('我是{0}, 年龄是:{1},今年{1}岁'.format('ssr', 18))  # 我是ssr, 年龄是:18,今年18岁

print("数据1:{1},数据2:{0},数据3:{1},".format(10, 20))  # 数据1:20,数据2:10,数据3:20,

# 用法3:[key]
# '{key1}, {key2}'.format(key1=值1, key2=值2)  -> '值1,值2'

print('我是{name}, 年龄是:{age},今年{age}岁'.format(name='ssr', age=18))  # 我是ssr, 年龄是:18,今年18岁

# 用法4:用列表元素给占位符赋值

list1 = [1, 2, 3, 4, 5]
print('{0[1]},{0[0]},{0[3]}'.format(list1))

# 用法5:用字典的值给占位符赋值

student = {'name': '小明', 'age': 20, 'id': '001', 'score': 100}
print('{name}今年{age}岁,学号:{id},考了{score}'.format(**student))  # 小明今年20岁,学号:001,考了100

format(**student) -> format(name='小明', age=20, id='001', score=100)

其他写法

# 约束小数
print('圆周率:{:.2f}'.format(3.1415926))
# 约束整数宽度
print('整数:{:0>4d}。'.format(25))    # 整数:0025
print('整数:{:0<4d}。'.format(25))    # 整数:2500。
print('整数:{:+>4d}。'.format(25))    # 整数:++25。
# 分隔
print('大的整数:{:,}'.format(100000000))  # 大的整数:100,000,000
# 百分比
print('百分比:{:.2%}'.format(0.25))  # 百分比:25.00%

四、字符串相关方法

1.字符串.capitalize() —— 将字符串的首字母变成大写字母

str1 = 'python'
str2 = str1.capitalize()
print(str2)

2.center/ljust/rjust/zfill
字符串.center(宽度,填充字符) xabcx
字符串.ljust(宽度,填充字符) abcxx
字符串.rjust(宽度,填充字符) xxabc
字符串.zfill(宽度) == 字符串.rjust(宽度, '0')

print('abc'.center(8, 'x'))  # xxabcxxx
print('abc'.ljust(5, 'x'))  # abcxx
print('abc'.rjust(5, 'x'))  # xxabc
num1 = 21
print(str(num1).zfill(3))  # 021

字符串1.count(字符串2) -> 统计字符串1中字符串2出现的次数
字符串1.count(字符串2,开始下标,结束下标) -> 统计字符串1开始下标到结束下标范围内字符串2出现的次数

str2 = 'how are you? i am fine! thank you!'
print(str2.count('a'))  # 3
print(str2.count('ou'))  # 2
print(str2.count('you', 0, 15))  # 1
# 4.
str1 = 'abc'
str2 = 'how are you'
# 判断str2是否以str1结尾
print(str2[-len(str1):] == str1)

5.字符串查找
字符串1.find(字符串2) - 获取字符串2第一次在字符串1中出现的位置(用大于等于0的下标值表示)
字符串不存在的时候,结果为-1
字符串1.index(字符串2) - 获取字符串2第一次在字符串1中出现的位置(用大于等于0的下标值表示)
字符串不存在的时候会报错

str2 = 'how are you? i am fine! thank you!'
print(str2.index('you'))  # 8
print(str2.find('you123'))  # -1
# print(str2.index('you123')) # ValueError: substring not found

6.join
字符串.join(序列) - 将序列中的元素用字符串连接在一起产生一个新的字符串;
序列中的元素是字符串

str3 = '+'.join('abc')
print(str3)  # a+b+c

str4 = ','.join(['name', 'age'])
print(str4)  # name,age

str5 = ''.join({'a': 1, 'b': 1})
print(str5)  # ab

7.字符串替换
1)字符串1.replace(字符串2, 字符串3) -> 将字符串1中所有的字符串2都替换成字符串3
每次只能替换一个
2)
字符串.maketrans(字符串2, 字符串3) -> 创建字符串2和字符串3一一对应的映射表
字符串.translate(替换的映射表)

str2 = 'how are you? i am fine! thank you!'
new_str2 = str2.replace('you', 'me')
print(new_str2)  # how are me? i am fine! thank me!

table = str.maketrans('a!', 'b+')
new_str2 = str2.translate(table)  # 将字符串str2中所有的a都替换成b,所有的!都替换成+
print(new_str2)  # how bre you? i bm fine+ thbnk you+

8.字符串切割
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点切成多分

str2 = 'how are you? i am fine! thank you!'
print(str2.split(' '))  # ['how', 'are', 'you?', 'i', 'am', 'fine!', 'thank', 'you!']
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 1 字符编码 python中的编码采用的是Unicode编码。什么是编码?就是数字和字符的一一对应的,其中字符对应...
    barriers阅读 411评论 0 1
  • 1.什么是字符串 序列,有序,不可变的。用单引号或者双引号括起来的任意字符集。 2.字符串中的字符 a.普通字符:...
    发家致富靠养猪阅读 625评论 1 7
  • 1. 字符串(str) 字符串是python提供的容器型数据类型(序列),不可变、有序 不可变:不支持增删改;有序...
    墨2019418阅读 173评论 0 0
  • 字符串 1.什么是字符串 序列:有序,不可变的。用单引号或者双引号括起来的任意字符(集)。 2.字符串中的字符 a...
    落幕丶丶阅读 789评论 0 0
  • 一、字符串和字符 1.什么是字符串(str) 字符串是容器型数据类型,将''/""/''''''/""""""作为...
    阿富汗入肉诈弹阅读 309评论 0 1