Day 6-note

str字符串

1. 什么是字符串

1)字符串是python提供的容器型数据类型(序列),不可变,有序
不可变 -- 不支持增删改;有序 -- 支持下标操作
2)python中的字符串是用单引号或者双引号引起来的字符集;引号里面的每个基本单元叫字符

str1 = 'hello'
2. 字符

python中只有字符概念,没有字符类型,只有字符串类型
1)普通字符:数字、字母、普通符号、中文、日语等
2)转义字符:
在特定的符号前加\来表示特殊功能或者特殊意义的字符

\n -- 换行(相当于回车)
\' -- 单引号字符(不是字符串开头/结尾标志)
\" -- 双引号字符(不是字符串开头/结尾标志)
\\ -- 反斜杠本身(让一个反斜杠失去转义的功能)
\t -- 制表符(相当于Tab键)
阻止转义:在字符串的最前面加r/R,能够阻止字符串中所有的转义字符转义(正则表达式中用的多)

3)编码字符:在字符串中用'\u四位的十六进制数'来表示一个字符
\u字符编码值得16进制数

a - 97
b - 98

3.1)字符编码

计算机本身只有直接存储数字的能力(存数字的二进制的补码),为了能够存储数字以外的符号,
开发人员给每个字符对应一个固定的数字用来对字符进行存储.每个字符对应的固定的数字就是
字符的编码值。
每个字符和数字的--对应关系就是字符编码表,常见的编码表有:ASCII码表,Unicode编码表
  • ASCII编码表采用一个字节对字符进行编码:0 - 127
  • Unicode编码表采用两个字节对字符进行编码,包含了ASCII码
  • chr函数:chr(编码值 - 获取编码值对应的字符)
  • ord函数:ord(字符) - 获取指定字符对应的编码
3. 字符串操作:查

1)获取单个字符

语法:字符串[下标]   --  获取指定下标对应的字符
说明:字符串  --  结果是字符串的表达式(字符串值、字符串变量、运算结果是字符串)
      []   --  固定写法
      下标  --  又叫索引,字符串确定后,字符串中的没有字符都有一个确定的下标/索引表示这个字符在字符串中的位置。
                python中下标有两种,位置从前往后是 0-字符串长度-1;位置从后往前是-1-字符串长度
注意:获取单个字符的时候下标不能越界
str1 = 'hello'
print(str1[0], str1[3])
print(str1[-1])
str2 = '\tabc 345'
print(str2[2], str2[5])
# print(str2[100])     # IndexError: string index out of range
# print(str2[-20])     # IndexError: string index out of range
print('how are you' [2])

2)获取部分字符(字符串切片)

语法:字符串[开始下标:结束下标:步长]  --  从开始下标开始获取,每次增加步长取下一个值;取到结束下标前为止(结束下标对应的值取不到)
说明:字符串  --  结果是字符串的表达式(字符串值、字符串变量、运算结果是字符串)
      []  --  固定写法
      开始下标  --  下标,整数。能取到对应的字符
      结束下标  --  下标,整数。对应的字符取不到
      步长  --  整数。如果步长是正数,从前往后取;如果步长是负数,从后往前取
注意:1.字符串切片的结果都是字符串
      2.如果步长是正数,name开始下标对应字符要在结束下标对应的字符的前面,才能取到值
        如果步长是负数,那么开始下标对应的字符要在结束下标对应的字符的后面,才能取到值
      3.切片的时候下标可以越界
str3 = 'abc+123'
print(str3[0:3:1])
print(str3[2:-2:1])   # 'c+1'
print('结果:', str3[2:-2:-1])   # ''
print(str3[0:-1:1])     # abc+12
print(str3[-1:1:-2])    # 31c
print(str3[-1:1:-2])    #
print(str3[-100:100:1])  # 'abc+123'

3)获取部分字符的简写

1. 省略步长
语法:字符串[开始下标:结束下标]  <==>字符串[开始下标:结束下标:1]
str4 = 'hello world'
print(str4[3:-2])
2. 省略开始下标  --  步长为正从字符串开头往后获取;步长为负从字符串最后往前获取
语法:字符串[:结束下标:步长]、字符串[:结束下标]
3. 省略结束下标  --  步长为正,取到字符串最后一个字符;步长为负取到第一个字符为止
语法:字符串[开始下标::步长]、字符串[开始下标:]
str4 = 'hello world'
print(str4[1:])       # ello world
print(str4[1::-1])    # eh
print(str4[:])        # hello world
# 字符串倒叙
print(str4[::-1])     # dlrow olleh

4)遍历字符串 -- 将字符串中的字符一个一个的取出来

for 变量 in 字符串:
    循环体
str4 = 'hello world'
# 直接遍历,变量取到的就是字符
for char in str4:
    print(char)
# 间接遍历,通过遍历下标遍历字符
for index in range(11):
    print(str4[index])
for index in range(-1,-11,-1):
    print(index,str4[index])
  • 练习:统计输入的字符串中,字母'a'出现的次数
  • 例如:输入'how are you! fine, thanks. and you ' 打印: 3
  • aaabcabc ->4
value = input("输入一个字符串:")
count = 0
for char in value:
    if char == 'a':
        count += 1
print(count)
4. 字符串相关操作

1.字符串的运算:
1)数学运算符:+,*
字符串1+字符串2:两个字符串相加 --> 将两个字符串拼接产生一个新的字符串

str1 = 'abc' + 'hello'
print(str1)
# str2 = 'abc' + 123   # TypeError: must be str, not int

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

str2 = 'abc' * 3
print(str2)

2)比较运算符:>,<,>=,<=,==,!=
针对两个字符串进行比较

str3 = 'abc'
print('abc' == str3)

字符串比较大小:按位置从前往后一对一对的比较,找出第一对不相等色字符,看它们的编码值谁大,那个字符串就大

print('abcde' > 'az')     # False
print('你好' > 'hello')  # true
应用:
判断一个字符是否是小写字母:'a' <= char <= 'z'
判断一个字符是否是大写字母:'A' <= char <= 'Z'
判断一个字符是否是字母:'a' <=char<='z' or 'A'<=char<='Z'
判断一个字符是否是数字字符:'0' <=char<='9' 
判断一个字符是否是中文(4e00-9fa5):'\u4e00'<=char<='\u9fa5','一'<=char<='龥'yu
  • 练习:统计一个字符串中大写字母的个数
    例如:How Are You! -->3
value = input("请输入一个字符串:")
# value = 'How Are You!'
count = 0
for char in value:
    if 'A' <= char <= 'Z':
        count += 1
print(count)

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

str5 = '你好'
str5 += 'hello'
print(str5)
str5 *= 2
print(str5)
  1. in 和 not in
    字符串1 in 字符串2 -- 判断字符串2中是否包含字符串1
print('abc' in '123abc')    # True
print('abc' not in '123abc')   # False
  1. len
    len(字符串) -- 获取字符串长度(字符串中字符的个数)
print(len('abc'))
print(len('\tabc'))
print(len('\tabc'))
str6 = '    abc'
print(len(str6))
for index in range(len('wueyiuewhfs')):
    print(index)
  1. str
    str(数据) -- 将其他类型数据转换成字符串
    所有类型的数据都可以转换成字符串;转换的时候直接在数据的外面加引号
print(str(100))     # '100'
print(str(12.3))    # '12.3'
print(str(True))    # 'True'
  1. 格式字符串:在字符串中用格式占位符代替字符串中文化的部分,然后再使用数据对变化的部分进行赋值
语法:包含格式占位符的字符串 % (数据1, 数据2,...)
说明:数据的个数和类型要和前面字符串中格式占位的个数和类型保持一致
格式占位符:%s -- 字符串
            %d -- 整数
            %.Nf -- 浮点数(N是用来控制小数后小数的位数)
            %c -- 字符、字符对应的编码值
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
money = 3.5
message = '我是%s,今年%d岁,薪资:%.2fk 等级:%c' % (name, age, money, 65)
print(message)
5. 字符串的对象方法

字符串.函数名()
1.capitalize() -- 将字符串中的第一个字符转换成大写字母

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

2.设置对齐方式

字符串.center()(width, fillchar)  -- 让字符串在新字符串中居中,width控制新字符串的宽度,fillchar是填充字符
字符串.rjust() (width, fillchar)
字符串.ljust() (width, fillchar)
str1 = 'abc'
print(str1.center(7, '*'))
print(str1.rjust(7, '%'))
print(str1.ljust(7, '='))
num = 5
print(str(num).rjust(3, '0'))
print(str(num).zfill(3))

你可能感兴趣的:(Day 6-note)