day06总结

字符串

1.什么是字符串

解释: 字符串是python内置的一种容器型数据类型,将引号作为容器,里面根据情况可以放多个字符
不可变,有序:字符串中内容的值和顺序不能改变,一旦字符串确定,字符串中的值及其位置就固定

s1 = 'jjee'
s1[0] = 'k'
print(s1)
# 以上报错,可以整体s1 重新赋值,但是不能对其中的某一个s[i]操作
2.字符

python中只有字符串的概念,没有对应字符的数据类型
字符概念:字符串的基本单元,又叫字符串元素

  • 基本字符:数字 字母 常用符号 各种语言文字

  • 转译字符:通过转译符号 \ 后加不同的符号来表示特殊功能 或者特殊意义的字符
    \n :换行 \' :表示字符串单引号,\":双引号,\t:制表符 \\ 反斜杠 。。。
    理解: \\ 代表一个没有特殊意义的 \ 字符
  • r语法:在字符串前加r,可以取消字符串内所有的 \ 转译(一般用于正则)

  • c.用编码形式表示字符:
    支持16进制
    \u后跟4位16进制数表示一个字符,4位16进制的数表示字符的编码值, 不足4位则在左侧用0填充
    如'\u0064' 打印结果为字符 ‘d’
3.字符的编码
  • python中的字符采用的是Unicode编码,
  • 计算机存储数据的时候只能存数字,而且存的是数字的补码(二进制一种格式)
  • 编码:每一个字符在计算机中存储的时候都会对应一个固定且唯一的数字,这个数字即为这个字符的编码,
    每一个字符和数字的一一对应关系就是编码表
  • 常见编码表:ASCII码表 Unicode编码表
  • ACSII表中只记录的数字字符,字母字符,英文符号,进行编码(英语对照表)
  • Unicode码表中包含ACSII码表,是对其的扩充,包含世界上所有符号------.十六进制 4e00-9fa5对应中文
  • 常用转换函数
    chr(): 获取编码值对应的字符
    ord(): 获取字符对应的编码 字符值就是长度为1的字符串
print(chr(0x4e00))  #获取编码值对应的字符  结果是 -
print(ord('-'))  #获取字符对应的编码的十进制  结果是 45
print('\u0064') #字符的16进制写法  d 在16进制前+\u
  • 编码互相转换(整型数)
    1. 二进制 表示 形式 0b + ...
      bin(): 得到数字的二进制
    2. 八进制 表示形式 0o + ...
      oct():得到数字的八进制
    3. 十六进制 表示形式 0x + ...
      hex():得到数字的十六进制

通常的软件环境均为十进制,未经处理的整数都显示为十进制
100 等价于 0b1100100 等价于 0o144 等价于0x64

print(bin(100))  #二进制的100  0b1100100
print(oct(100))  #8进制100 0o144
print(hex(100))      #16进制100 0x64
#转换结果为str型

100 等价于 0b1100100 等价于 0o144 等价于 0x64

4.获取字符-取字符串内容
  • 获取单个字符
    语法:字符串[下标]
    说明:字符串 - 可以是字符串值,也可以是字符串变量,结果是字符串的表达式都行

    • [] - 固定写法

    • 下标 - 又叫索引,一旦字符串确定,字符串中每个字符都会对应一个下标,表示字符在字符串中的位置,范围是0开始到字符串的长度减1。

      • 0表示第一个字符,1表示第二个。。。(通用)
      • python中还可以是(-1至-(字符串长度))
        -1表示倒数第一个

      注意:获取的单个字符的时候,下标不能越界

  • 获取部分字符(字符串切片)
    语法:字符串[开始下标:结束下标:步长]
    从开始下标开始,获取到结束下标前位置,每次下标值增加一个步长
    说明:[] : -固定写法

    • 开始下标、结束下标:
      开始下标能取到,结束下标对应的字符取不到
    • 步长,可以是正,或负整数

    注意:下标可以越界

    • 如果步长为正,从前往后获取, 开始下标对应的字符,要在结束下标对应得字符前,才能拿到值

    • 如果步长为负,从后往前获取, 开始下标对应的字符要在结束下标对应字符的后面,餐呢过拿到值

    • 切片语法中,可以对步长,开始下标和结束下标进行省略:

#1.省略步长及对应的 冒号
str[1:2]  #步长默认为1
#2.省略下标
str[:5:2] #省略开始则默认为对应方向的开头
str[1::2] #省略结束则默认为对应方向的结尾
  • 遍历字符串
    1.方法1
    for 变量 in 字符串:
    循环体

    1. 方法2 通过遍历下标来遍历字符串
      for 变量(下标) in range(字符串长度):
      字符串[变量]
5.字符串相关运算
  • 数学运算,字符串支持加法运算和乘法运算
    1.语法: 字符串1+字符串2
    功能:将两个字符串拼接到一起,产生一个新的字符串
    注意:数字和字符串不能混合相加

    2.语法:字符串*正整数,正整数*字符串
    功能:字符串重复指定次数
    注意:整数为0 或负时,为空串

  • 比较运算符:字符串支持所有的比较运算符 同类型值进行比较

    1. == !=
      语法:字符串1== 字符串2、字符串1 != 字符串2
      功能:判断字符串是否相等

    2.< >
    'abcdef' > 'abz'
    依次从前往后比较对应位置的字符的编码值,相等则比较下一位 ,不相等则比较编码值大小,结果为作为字符串的大小
    应用:判断一个字符是否是字母、数字、中文
    'a' <= char <= 'z'
    'A' <= char <= 'Z'
    '\u4e00' <= char <= '\u9fa5'或者 0x4e00 <= ord(char) <= 0x9fa5

str1 = 'sfsdfsdf电风扇3432'
strNum = 0
charNum = 0
numNum = 0

for s in str1:
    if 'a' <= s <= 'z' or 'A' <= s <= 'Z':
        strNum += 1
    if '0' <= s <= '9':
        numNum += 1
    if '\u4e00' <= s <= '\u9fa5':
        charNum += 1
  • in 和 not in 操作
    语法:字符串1 in 字符串2 、字符串1 not in 字符串2
    功能:判断字符串1 是否在字符串2中

  • 常用内置函数
    len(字符串) 求字符串长度, 转译字符长度为1
    str(数据) 将其他数据转换成字符串,所有数据都能转换成字符串 包括列表字典等复杂数据类型,
    结果直接在数据上加上引号
    int('整数') 去掉引号后,是整数的可以转化
    float('数字') 去掉引号后 本书是一个数字的字符串可以转化
    bool('') 空串是False 其他均是True

  • 字符串的对象方法
    格式:字符串.方法()
    产生新的字符串

#在前方填充为奇数个数,后方填充为偶数个数, fillchar 长度只能为1
print('heww'.center(8, '@')) 

Python 的字符串内建函数

Python 的字符串常用内建函数如下:

序号 方法 描述
1 capitalize() 将字符串的第一个字符转换为大写
2 center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3 count(str) 返回 str 在 string 里面出现的次数
4 bytes.decode(encoding="utf-8", errors="strict") Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
5 encode(encoding='UTF-8',errors='strict') 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
6 endswith(suffix) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
7 expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
8 find(str, beg=0 end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
9 index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常.
10 isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
11 isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
12 isdigit() 如果字符串只包含数字则返回 True 否则返回 False..
13 islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
14 isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False(中文数字也可以)
15 isspace() 如果字符串中只包含空白,则返回 True,否则返回 False.
16 istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False
17 isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
18 join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
19 len(string) 返回字符串长度
20 ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
21 lower() 转换字符串中所有大写字符为小写.
22 lstrip() 截掉字符串左边的空格或指定字符。
23 maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
24 max(str) 返回字符串 str 中最大的字母。
25 min(str) 返回字符串 str 中最小的字母。
26 replace(old, new [, max]) 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
27 rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找.
28 rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始.
29 rjust(width,[, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
30 rstrip() 删除字符串字符串末尾的空格.
31 split(str="", num=string.count(str)) num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串
32 splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
33 startswith(str, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
34 strip([chars]) 在字符串上执行 lstrip()和 rstrip()
35 swapcase() 将字符串中大写转换为小写,小写转换为大写
36 title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
37 translate(table, deletechars="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中
38 upper() 转换字符串中的小写字母为大写
39 zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0
40 isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

你可能感兴趣的:(day06总结)