美文网首页
Day3—字符串

Day3—字符串

作者: C0mpass | 来源:发表于2018-08-23 08:46 被阅读0次

    题外:计算机的数据存储

    计算机在存储数据的时候,都是以二进制的形式存储在计算机中的。并且数据存储时,存的是一个数的“补码”。原码, 反码, 补码是计算机存储一个具体数字的编码方式。

    1. 原码
      正数的原码:符号位的值是0,后面是数值的大小。
      负数的原码:符号位的值是1。
      例如:
    需储存的数(十进制) 转换为二进制 源码表示
    10 1010 00001010
    -10 ~ 10001010
    1. 反码
      正数的反码:符号位的值是0,后面是数值的大小。
      负数的反码:符号不变,后面的每一位的值相比较正数取反(即0→1,1→0)。
      例如:
    需储存的数(十进制) 转换为二进制 源码表示
    10 1010 00001010
    -10 ~ 11110101
    1. 补码
      正数的补码:符号位的值是0,后面是数值的大小。
      负数的补码:反码值+1。
      例如:
    需储存的数(十进制) 转换为二进制 源码表示
    10 1010 00001010
    -10 ~ 11110110

    1 认识字符串

    1.1 什么是字符串

    • a.用单引号或者双引号括起来的字符集就是字符串。
    • b.字符串中每个独立的单元我们叫字符,例如字符串'ab12'中的'a'、'b'、'1'、'2'就是字符。

    1.2 转义字符

    即通过“\”号将一些特殊的字符转换成一个具有特殊功能或者特殊意义的字符。
    说明:python中没有字符类型,如果要表示字符,就是用长度为1的字符串表示。

    常见的几种转义符:\n(换行)、\t(制表符--Tab)、\r(回车)、\f(换页)等等;
    其它还有反斜杠号(\)、单引号(')、双引号(")在前面加上反斜杠号即可在字符串中原样显示。
    

    1.3 Unicode编码

    • Python中字符的编码采用的是Unicode编码。
    • Unicode采用两个字节对一个字符进行编码(2^{15}),能够将世界上所有符号编码。
    • Unicode编码包含了ASCII码。
      将字符串转换成指定的数值,这个过程就是编码(编码的目的是方便计算机储存);将数值转换成对应的符号的过程就是反编码。
    # 转换
    # 1)将Unicode码转换成字符:chr(编码)
    print(chr(0x4e03))
    
    # 2)将字符转换成Unicode编码:ord(字符),其结果为十进制
    print(hex(ord('曾')))  # hex()将十进制转换成十六进制 
    

    执行以上代码,输出结果为:


    0x66fe

    2 获取字符串

    字符串实质可以看成是一个不可变的序列,序列的内容就是字符。一旦字符确定,那么里面的字符和字符的位置就不可变了。

    2.1 获取单个字符

    python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串[索引]

    说明:

    • a.字符串可以是字符串值,也可以是字符串变量
    • b.[]:中括号是固定语法
    • c.索引:从0开始到字符串长度减1。-1 ~ -长度(-1对应的是最后一个字符,-2对应倒数第二个字符)。索引不能越界,否则会报错(产生异常)。
      示例代码:
    str1 = 'abcd'
    
    print(str1[0]) 
    print(str1[-1])
    

    执行以上代码,输出结果为:

    a
    d

    2.2 获取部分字符(获取字串)——切片操作

    1. 操作格式:“字符串[索引值1:索引值2]”:从索引值1开始获取,获取到索引值2前的所有字符。切片时索引值2可以越界,越界的时候就取临界值。
      示例代码:
    str1 = 'abcd'
    str2 = 'hello python'
    
    print(str1[0:-2])
    print(str1[-2:-1])
    print(str2[0:4])
    

    执行以上代码,输出结果为:

    ab
    c
    hell

    1. 操作格式:字符串[索引值1:索引值2:步进]: 从索引值1开始获取,每次索引值增加步进值,每增加一个次取一个字符,知道取到索引值2前为止。
      注意:a.步进如果是正数,那么索引值1对应的字符位置一定要在索引值2对应位置的前面; 步进如果是负数,那么索引值1对应的字符位置一定要在索引值2对应位置的后面。
         b.索引值2对应的字符是取不到的。
      示例代码:
    str3 = 'helloPython'
    
    print(str3[0:5:2]) 
    print(str3[-1:-5:-1])
    

    执行以上代码,输出结果为:

    hlo
    noht

    1. 索引值的省略
      切片的时候,索引值1和索引值2是可以省略的
    • 索引值1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是字符串的最后一个字符)
    • 索引值2省略:从索引值1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是字符串的第一个字符)
      示例代码:
    str5 = "123456789"
    
    print(str5[::])
    print(str5[1::])
    print(str5[:2:])
    print(str5[::3])
    

    执行以上代码,输出结果为:

    123456789
    23456789
    12
    147

    3 字符串的运算

    3.1 字符串的“+”

    字符串+字符串:python支持两个字符串相加,其效果就是将两个字符串拼接在一起,产生一个新的字符串。
    示例代码:

    print('abc'+'123')
    

    输出结果:

    abc123

    3.2 字符串的“*”

    操作格式:字符串“*”整数(也就是字符串重复多次)。
    示例代码:

    print('123'*3)
    

    输出结果:

    123123123

    3.3 支持所有比较运算符

    • a.让str1中的每一位字符,分别同str2中每一位字符依次比较。直到不同为止,再看不同字符中谁的编码值大或者小。
    • b.其比较结果都是布尔值。
      示例代码:
    str1 = 'abcd'
    str2 = 'ac'
    str3 = 'fgh'
    
    print(str1 > str2)
    print(str1 > str3)
    print(str2 > str3)
    

    输出结果:

    'False'
    'False'
    'False'

    3.4 in和 not in

    str1 in str2:判断str1是否在str2中(str2是否包含str1/str1是否是str2的子串),结果是布尔值。
    示例代码:

    print('abc' in 'a1b2cdef')
    print('f' not in 'python')
    
    

    输出结果:

    'False'
    'True'

    3.5 获取字符串长度

    字符串的长度,指的是字符串中字符的个数。通常用内置函数len()来获取字符串长度
    示例代码:

    str1 = 'project'
    print(len(str3),len('abc 1\\2'))
    

    输出结果:

    7 7

    3.6 阻止转义

    在字符串的最前面添加r或者R可以阻止转义
    示例代码:

    print('a\nb')
    print(r'a\nb')
    

    输出结果:

    a
    b
    a\nb

    4 格式化字符串

    表示格式为:带格式的字符串%(格式符对应的值)
    说明:%是固定格式;()也是固定格式。带格式符的字符串中有几个格式符,那么后面的括号中就必须有几个和它一一对应的值。

    • 以下是常见的几种格式化字符串符号:
    符号 描述
    %s 格式化字符串
    %d 格式化整数
    %f 格式化浮点数(%.nf为保留小数点后n位小数)
    %c 格式化字符(可以将数字转换成字符拼接到字符串中)

    示例代码如下:

    # Hello,xxxx!今年xx岁
    first_name = 'zhang'
    last_name = 'san'
    age = 28
    print('Hello,%s%s!今年%d岁' % (first_name,last_name,age))
    
    # 金额是:xx.xx元
    money = 999
    print('金额是:%.2f元' % (money))
    

    执行以下代码,输出结果为:

    Hello,zhangsan!今年28岁
    金额是:999.00元

    5 字符串相关方法

    python为字符串提供了很多的内建函数,使用方法为:“字符串.函数()”。
    注意:这些所有的函数功能都不会影响原来的字符串,而是产生一个新的字符串。

    方法 描述
    capitalize 将字符串的第一个字符转换为大写
    center(width,fillchar) 返回一个指定的宽度width居中的字符串,fillchar 为填充的字符,默认为空格。
    count(str,start=0,end=len(string)) 返回 str 在 string 里面出现的次数,star为字符串开始搜索的位置,end为字符串中结束搜索的位置
    expandtabs(tabsize=8) 把字符串中的 tab 符号('\t')转为空格,tabsize为指定转换字符串中的 tab 符号('\t')转为空格的字符数,默认空格数是8
    find(str,start=0,end=len(string) 检测字符串中是否包含子字符串 str ,如果指定 start(开始)和 end(结束)范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1
    indx(str,start=0,end=len(string) 跟find()方法一样,只不过如果str不在字符串中会报一个异常

    相关文章

      网友评论

          本文标题:Day3—字符串

          本文链接:https://www.haomeiwen.com/subject/ntayiftx.html