day8 总结str

什么是字符串 str

1)

字符串是python提供的容器型数据类型(序列),不可变、有序的。

不可变 - 不支持增删改;有序 - 支持下标操作

一个字符串可以包含多个字符

2)

python 中的字符串是用单引号或者双引号引起来的字符集,引号里面的每个基本单元叫字符

str1 = 'hello'

2.字符

python中只有字符的概念,没有字符的类型

1)普通字符:数字,字母,普通符号,中文,日文等

str2 = '123a and 你好!@!%& '

2)转义字符

在特定的符号前加\来表示特殊功能或者特殊意义的字符

\n( 换行(相当于按了回车)

' - 单引号字符(不是字符串开头/结尾的标志)

" - 双引号字符(不是字符串开头/结尾的标志)

\ - 表示反斜杠本身(让一个反斜杠失去转义的功能)

\t - 制表符(相当于按了tab)

\r

str3 = '123\nabc'
print(str3)

str4 = '\t123\'\nabc\"\\none'
print(str4)

阻止转义

在字符串的最前面加 r/R,能够阻止字符串中所有的转义字符转义

str5 = r'\twqe\nqrew\nyou\"'
print(str5)

3)编码字符

在字符串中用‘\u四位的十六进制数’来表示一个字符

\u 字符编码值的16进制数

字符编码:

计算机本身只有直接存储数字的能力(存数字的二进制的补码),为了能够存储数字以外的符号,

开发人员给每个字符对应一个固定的数字用来对字符进行存储。每个字符对应的固定数字就是字符的编码值。

每个字符和数字的一一对应关系就是字符编码表,常见的编码表的有:ASCII码表、Unicode编码表

ASCII码表:采用一个字节对字符进行编码:0-127

Unicode编码表:采用两个字节对字符进行编码:包含了ASCII表

chr函数:chr(编码值) - 获取编码值对应的字符

print(chr(100),chr(0x6e00))

a - 97 b - 98

ord函数:ord(字符) - 获取指定字符对应的编码

print(ord('高'),ord('鹏'))

str6 = '1234\u1234\u4e11'
print(str6)

练习:

for code in range(0x30a0,0x30ff):
    print(chr(code))

2.字符串操作 : 查(获取字符)

1) 获取单个字符

"""
语法:
字符串[下标] --- 获取指定下标对应的字符
说明:字符串 --- 结果是字符串的表达式(字符串值、字符串变量、运算结果是字符串)
[] --- 固定写法
下标 --- 又叫索引,值是整数;字符串确定后,字符串中的每一个字符都有一个确定的下标/索引表示这个字符在字符串中的位置。
python中下标有两种,位置从前往后数0字符串长度-1,位置从后往前数-1负的字符数长度。
"""

空格也代表一个字符

注意:获取单个字符的时候下标不能越界 中括号里面的下标不能超过字符串的字符数

str7 = "hello"
print(str7[3],str7[4])

str8 = 'ab  \ncd'
print(str8[3],str8[5])

2)获取单个字符(字符串切片)

"""
语法:
字符串[开始下标:结束下标:步长]
从开始下标开始获取,每次增加步长取下一个值;取到结束下标前为止(结束下标对应的值取不到)
说明:字符串 --- 结果是字符串的表达式(字符串值、字符串变量、运算结果是字符串)
[] 和 :--- 固定写法
开始下标 --- 下标,整数。能取到对应的字符
结束下标 --- 下标,整数。对应的字符取不到
步长 --- 整数,如果步长是正数,从前往后取;如果是负数就是从后往前取

注意:1.字符串切片的结果都是字符串,
2.如果步长是正数,开始下标对应的位置要在结束下标对应的字符前面;步长是负数,开始下标对应的位置要在结束下标对应的字符后面。
3.切片时下标可以越界
"""

str9 = 'abc 123'
print(str9[0:3:1])

'''

  1. 获取部分字符的简写
    1.省略步长
    语法:
    字符串[开始下标:结束下标] --- 相当于步长是1
    2.省略开始下标
    语法:
    字符串[:结束下标:步长] --- 步长为正从字符串开头往后取,步长为负从字符串最后往前取
    字符串[:结束下标:]

3.省略结束下标
语法:
字符串[开始下标::步长] --- 步长为正,取到字符串最后一个字符;步长为负取到第一个字符为止。
字符串[开始下标:]

4.字符串倒序
print(str8[::-1]) 倒序

'''

4) 便利字符串 --- 将字符串的字符一个一个的取出来

'''
for 变量 in 字符串:
循环体
'''

直接遍历,变量取到的就是每个字符

for chr in str9:
    print(chr,end='')

简洁遍历,通过遍历下标遍历字符

for index in range(7):
    print(str(index))

for index in range(-1,-10,-1):
    print(index,str9[index])

练习:统计输入小写字母a出现的次数

value = input('请输入')
count = 0
for char in value:
    if chr == 'a':
        count += 1
print(count)

字符串相关操作

1. 字符串的运算:

1)数学运算符 :支持加和乘

两个字符串相加: 将两个字符串拼接产生一个新的字符串

str1 = 'abc' + 'hello' ---> abchello

两个字符串相乘:

字符串正整数/正整数字符串:字符串重复指定次数产生一个新的字符串

str = 'abc' * 3
print(str) #------> abcabcabc

2)比较运算符:所有。> < = += == != <= >=

两个字符串进行比较

print('abc' == 'abc')
str1 = 'abc'
print('abc' == str1)

比较大小时,按位置从前往后一对一比较,比较的是编码值得大小

print('abcdef' > 'az')
print('你好'>'hello') #----> True

应用:

判断一个字符是否是小写字母 'a'<=char<='z'

判断一个字符是否是大写字母 'A'<=char<='Z'

判断一个字符是否是字母 'a'<=char<='z' or 'A'<=char<='Z'

判断一个字符是否为数字 '0'<=char<='9'

判断一个字符是否为中文(4e00~9fa5) '\ue400<=char<='\u9fa5

练习:统计一个字符串中大写字母的个数

例如: How Are You!

value = 'How Are You!'
count = 0
for x in value:
    if 'A' <= x <= 'Z':
        count += 1
print(count)

3):赋值运算符: = += *=

str2 = '你好'
str2 = 'hello'
print(str2)

2. in 和 not in

字符串1 in 字符串2 --- 判断字符串2是否包含字符串1,原样出现

print('abc'in'abc1234')   #----> True
print('A'in'hella')
print('a'not in 'hello')

3. len

len(字符串) --- 获取字符串长度(字符串中字符的个数)

print(len('abc'))
print(len('\tabc'))     # --->7
#print(len(\u4e00abc))   #--->4
for index in range(len('afsajfksafksa')):
    print(index)

4.str

str(数据) --- 讲其他数据类型转换成字符串

所有类型的数据都可以转换成字符串;转换的时候直接在数据的外面加引号

print(str(100)) # ---> '100'

print(str(12.55)) # ---> '12.55'

5 格式字符串

在字符串中用格式占位符代替字符串中变化的部分,然后再使用数据对变化的部分进行赋值

'''
语法:
包含格式占位符的字符串 % (数据1,数据2,....)

说明:数据的个数和类型 要和前面字符串中格式占位符的个数和类型保持一致

格式占位符: %s ---字符串
%d ---整数
%.f ---浮点数 ----%Nf--N是控制小数后小数的位数
%c ---字符/字符对应的编码值
'''

name = input('姓名')
age = int(input('请输入年龄'))
money = 3.5
# message = '我今年 岁'
#message = '我今年'+str(age)+'岁'
#print(message)

message = '我是%s,今年%d岁,薪资%.1fK,等级是%c'%(name,age,money,'A')
print(message)

字符的对象方法

字符串.函数名()

1. capitalize()

将字符串中的第一个字符转换成大写字母,不影响原字符串

str1 = 'abc'
print(str1.capitalize())

2.设置对其方式

'''
字符串.center(width,fullchar) --- 让字符串在新字符串中居中,width控制新字符串的宽度,fillchar是填充字符
字符串.rjust(width,fullchar)
字符串.ljust(width,fullchar)
字符串.zfill(width,fullchar) ---相当于字符串.rjust(width,0)
'''

str1 = 'abc'
print(str1.center(7,'*'))
print(str1.ljust(7,'*'))
print(str1.rjust(7,'='))

产生学号的时候应用

num = 15
print(str(num).zfill(3))
print(str(num).rjust(3,'0'))

1.字符串.count(字符串2) ----统计字符串1中字符串2出现的次数

print('safajdsnfkasnkn'.count('a'))

2. endswith

3. 字符串1.find(字符串2) ---- 返还字符串2在字符串1中第一次出现的下标(0~长度-1的下标),找不到为-1

print('ffrefewf'.find('e'))

字符串1.find(字符串2,startindex,endindex) --- 在指定范围内查找

print('fdsafsdsdaf',1,8)

4. 字符串.join(序列) ---- 讲序列中的元素取出来,中间用指定字符串拼接在一起产生新的字符串

new_str = '*'.join('abc')
print(new_str)
new_str = ''.join(['name','fds','ddsa'])
print(new_str)
# min 和 max
print(max('fdsanjfsa'))

6. 字符串.replace(old,new) ---- 讲字符串中指定的旧字符串全部替换成新的字符串

str1 = 'dsagfdsagfdsagdsa'
new_str = str1.replace('a','A',2)   #  --- 还可以跟一个替换的次数
print(new_str)

7. 字符串1.split(字符串2) --- 讲字符串1按照字符串2进行切割 返回的是列表

str1 = 'dsag fdsag fdsagdsa'
str2 = str1.split(' ')
print(str2)

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