day8-字符串和字符

1.字符串和字符

1.什么是字符串(str)

字符串是容器型数据类型,''""''''''""""""作为容器的标志里面的每一个基本符号就是字符串的元素
字符串是不可变(不支持增删改); 字符串是有序的(支持下标操作)
元素: 引号的每个基本单元就是字符串的元素, 又叫字符(python中只有字符的概念没有字符对应的类型,一般使用
长度为1的字符串来表示字符)

1) 空字符串

2) ‘’、""、’’’’’’、""""""的区别

‘’、"" - 字符串中不能直接换行

s5 = 'sdasdasdsadasda'
s6 = """
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡.
"""
print(s5)
print(s6)

3) 字符串有序

print(“abc” == “cba”) # False

2.字符

字符分为普通字符和转义字符两种:

1) 转义字符
在特定的一个或者多个符号前加\让符号具有特殊的功能或者特殊的意义。那么这种带有\字符就是转义字符
\n  -   换行
\t  -   水平制表符(相当于按一下tab键)
\'  -   表示一个单引号
\"  -   表示一个普通的双引号
\\  -   表示一个普通的反斜杠

注意: 任意一个转义字符长度都是1
2) 除了转义字符以外的都是普通字符, 普通字符在字符串中表示这个符号本身, 包括: 汉字、数字、字母、符号、表情符号等... 

特殊的转义字符 - 编码字符: \u四位十六进制数 - 表示十六进制数对应的编码值对应的字符

str5 = 'abc\u9999'     # abc香
print(str5)
str1 = '\tab\'c\n123'
str2 = "hello \"world"
print(str1)
str3 = '123\\n456'
print(str3)     # 123\n456

3.字符编码

1) 什么是字符编码
计算机在存储数据的时候只能存数字(存的数字二进制补码), 为了能够让计算机存储字符,
我们给每一个符号都对应一个固定的数字,那么每个字符对应的固定的数字就是这个字符的编码值
2) 字符编码表    -   记录字符和数字之间一一对应关系的标就是字符编码表
常见的字符编码表有两个:ASCII码表、Unicode编码表
a.ASCII码表
ASCII码表总共有128个字符对应的编码,主要包含的是美国的通用符号其中包括: 英文标点符号、数字字符、字母字符以及其他的一些符号
ASCII表中, 数字字符在字母前面, 大写字母在小写字母的前面, 大写字母和小写字母中间有间隔,每个大写字母和对应的小写字母之间间隔32
b.Unicode编码表
Unicode编码表包含ASCII码表
中文编码范围: 4e00    -   9fa5

1) 编码字符

print('\u1100')     # ᄀ
print('\u11ef')     # ᇯ

print('\u0f00\u0f03')   # ༀ༃
print('\u4e00\u9fa5 \u5af1')    # 一龥 嫱

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

print(chr(0x4e00))  # 一
print(chr(97))      # a
count = 0
for i in range(0x4e00, 0x9fa5+1):
    print(chr(i), end=' ')
    count += 1
    if count % 25 == 0:
        print()

3) ord(字符) - 获取字符的编码值(返回的是十进制数)

2.字符串操作

1.获取字符

字符串获取字符和列表获取元素的方法一样

1) 获取单个字符

sentence = '我们LGD是不可战胜的!'
print(sentence[::-1])    # !的胜战可不是DGL们我

2) 字符串切片

sentence2 = 'good good study! day day up!'
print(sentence2[5:-2])  # good study! day day u
print(sentence2[::-1])  # !pu yad yad !yduts doog doog

3) 遍历

for x in sentence2:
    print('x:',x)
for index, item in enumerate(sentence2):
    print(index, item)
for i in range(len(sentence2)):
    print(i, sentence2[i])

2.加法和乘法

print('abc' + '123')    # abc123
print('abc' * 3)     # abcabcabc

3.比较大小

两个字符串比较大小: 比较第一对不相等的字符编码值大小

char
'a' <= char <= 'z'  -   小写字母
'A' <= char <= 'Z'  -   大写字母
'a' <= char <= 'z' or 'A' <= char <='Z'     - 字母
'0' <= char <= '9'  -   数字字符
'\u4e00' <= char <= '\u9fa5'    -   中文字符
print("abc" > "XYZ")    # True
print("abc" > "你好!")    # False

4. in 和 not in

字符串1 in 字符串2 - 判断字符串1是否是字符串2的子串(判断字符串2中是否包含字符串1)

5. 相关函数

len、str
2) str(数据) - 将数据转换成字符串
a.哪些能转:所有的数据都可以转换成字符串
b.怎么转:在数据打印值外面加引号
c.字符串转数字

3.格式字符串

当一个字符串中有一个或者多个部分是变化的时候,我们可以用字符串加法运算、格式字符串和f字符串来实现这个功能

1.格式字符串

格式字符串:在字符串中用格式占位符代替字符串变化的部分,然后在后面用数据来给格式占位符赋值
语法:
带有格式占位符的字符串 % (数据1, 数据2, 数据3, ...)
说明:
1) %    -   固定写法
2) ()   -   固定写法, 在数据只有一个的时候可以省略
3) 数据   -   数据必须和占位符的个数一致; 类型一致一一对应
4) 格式占位符    -   格式占位符有哪些, 对应的数据类型是什么都是固定的
%s  -   字符串(可以是其他数据)
%d  -   整数
%f  -   浮点数; %.Nf   -   浮点数保留N位小数
name = input('姓名:')
age = int(input('年龄:'))
money = float(input("月收入:"))
message = '%s今年%d岁月薪%.2f元' % (name, age, money)
print(message)

2.f-string

  1. format方法
    包含{}的字符串.format(数据1, 数据2, …) - 字符串中{}就相当于格式字符串中的占位符
    a.{}
message = '{}今年{}岁, 月薪{}元'.format(name, age, money)
print(message)

b.{下标} - 下标指的是获取format中第几个数据, 从0开始

'年龄:xx', '今年:xx'
message = '年龄:{0}, 今年: {0}'.format(age)

c.{key}

message = '{name}的年龄,{age}, 今年{age}岁'.format(age=age, name=name)
print(message)

2)格式约束: {:约束条件}、{下标:约束条件)、{key:约束条件}

约束条件
.Nf -   保留N位小数(四舍五入)
字符 > Nd -   约束数字宽度位N, 不够的在前面用指定符填充
字符 < Nd -   约束数字宽度位N, 不够的在后面用指定符填充
,   -   将数字三位一组用逗号隔开
%   -   将小数转换成百分比数据, 保留6位小数
.N% -   将小数转换成百分比数据, 保留N位小数
print('约束1:{:.2f}'.format(3.1415926))  # 约束1:3.14
print('约束1:{0:.3f}'.format(3.1415926))  # 约束1:3.142

print('约束2:{:0<5}'.format(23))  # 约束2:23000
print('约束2:{:0>5}'.format(100))  # 约束2:00100
print('约束2:{: >5}'.format('abc'))   # 约束2:  abc
print('约束3:{:,}'.format(1000000))   # 约束3:1,000,000

print('约束4:{:.2%}'.format(0.2356))  # 约束4:23.56%

3)f-string - format方法简写

语法:
f'字符串内容'
name = '李华'
age = 80
money = 15454
message = f'{name}今年{age}岁, 月薪:{money/1000}k元!'
print(message)  # 李华今年80岁, 月薪:15454元!
message = f'{name}今年{age:0>5}岁, 月薪:{money/1000:.2f}k元!'
print(message)  # 李华今年00080岁, 月薪:15.45k元!

4.字符串的相关方法

s.capitalize() - 把字符串第一个字符大写
s.center(width[, fillchar])
fillchar - 填充字符
width - 填充宽度

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

message = 'how are you? i am fine, Thank you'
print("you", message.count('you'))  # you 2
print("空格", message.count(' '))     # 空格 7

2.字符串1.find(字符串2) - 获取字符串2第一次在字符串1中出现的位置(返回下标值)

print(message.find('you'))  # 8
print(message.find('你好'))   # -1(-1是表示找不到不存在与当前字符串中)

字符串1.find(字符串2,开始下标, 结束下标) - 获取字符串2在字符串1指定范围内第一次出现的位置

print(message.find('you', -7))  # 30
print(message.find('you', 0, 10))   # -1

3.字符串.join(字符串序列) - 将序列中所有的元素用指定的字符串拼接产生一个新的字符串

list1 = ['name', 'age', 'abc', '你好']
new_str = ' '.join(list1)
print(new_str)      # name age abc 你好

4.

字符串1.replace(字符串2, 字符串3) - 将字符串1中,所有的字符串2都替换成字符串3,产生一个新的字符串
字符串1.replace(字符串2, 字符串3,N) - 将字符串1中,前N个字符串2都替换成字符串3,产生一个新的字符串

new_str = message.replace('you', 'YOU')
print(new_str)  # how are YOU? i am fine, Thank YOU
new_str = message.replace('you', 'me', 1)
print(new_str)      # how are me? i am fine, Thank you

5.

字符串1.split(字符串2) - 将字符串1中的字符串2作为切割点对字符串1进行切割
字符串1.split(字符串2, N) - 将字符串1中的前N个字符串2作为切割点对字符串1进行切割

message = 'how are you? i am fine, Thank you'
print(message.split(' '))   # ['how', 'are', 'you?', 'i', 'am', 'fine,', 'Thank', 'you']

字符串.zfill(N) - 将字符串转换成一个指定长度的新字符串, 原字符串在邮编,左边用0填充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值