zoukankan      html  css  js  c++  java
  • 基本数据类型 之“字符串””

    基本数据类型

    • int:  整数类型
    • str:  字符串,一般不存放大量的数据
    • bool: 布尔值,用来判断。True False
    • list:    列表,用来存放数据用[]表示,里面存放各种类型的数据
    • tuple:元组,只读列表,用()表示,以“,”结尾
    • dict: 字典,{key:value}
    • set: 集合,不重复

    int类型

    在python3中所有的整数都是int类型,但在python2中如果数据量比较大,会使用long类型,在python3中不存在long类型。

           整数可以进行的操作:bit_length() 计算整数在内存中占用的二进制码的长度(很少用) 

           十进制5转化成二进制是101,长度是3,如下:

      a = 5  # 5的二进制是101 
      print(a.bit_length())   # 3
    

    bool类型,取值只有True和False,bool值没有操作

      str => int      int(str)
      int => str      str(int)
     
      int => bool    bool(int)   0是False,非0是True
      bool => int    int(bool)   True是1,False是0
    
      str => bool    bool(str)   空字符串是False,非空字符串是True
      bool => str    str(bool)   把bool值转换成相应的"值",即字符串"True"或者"False"
    

     结论:所有的空都是False,所有的非空都是True;例如:0,None,空字符串,空列表,空字典,空集合,空元组。

                    要想把某数据转换成xxx数据类型,则xxx(数据)即可;

    补充:比较下面两个死循环

                  while 1:
    
                         print(“hello world!”)
    
                  和
    
                  while True:
    
                         print(“hello world!”)
    

    我们可以发现两者的区别是循环条件分别是1和True,我们通常用第一种。因为前者代码较后者更少,且计算机最底层认的是01,True需要转化成01,而1到了计算机底层也是1,所以前者比后者运行快那么一点点。  

    字符串(str)

    把字符连成串,在python中用’,”,’’’,”””引起来的内容被称为字符串。

           切记:字符串是不可变的对象,所以任何操作对原字符串是不会有任何影响的,每次操作都返回新字符串。

    索引和切片

    • 索引:索引就是下标,下标从0开始,使用[下标]可以获取到每一个字符,索引不能超过边界,否则会报错,如下列代码示例:
              012345678
      s1 = "python最牛B"
      print(s1[0])  # 获取到p
      print(s1[1])  # 获取到y
      print(s1[2])  # 获取到t
      # print(s1[9])  # 没有9,越界了,会报 IndexError 的错误
      print(s1[-1]) # -1表示倒数第一个,即获取到B
    
    • 切片:我们可以使用下标来截取部分字符串的内容。
    • 语法:str[start:end]
    • 规则:顾头不顾尾,从start开始,截取到end位置,但不包括end,如下列代码示例:
    #         0123456 7 8
      s2 = "python最牛B"
      print(s2[0:3])  # 从下标为0获取到3,不包含3,结果为:pyt
      print(s2[6:9])  # 下标最大为8,但根据顾头不顾尾,想要取到最后一位必须给9,结果为:最牛B
      print(s2[6:10]) # 如果右边已经超过了最大值,则取到最后,结果为:最牛B
      print(s2[4:])   # 如果想获取到最后,那么end值可以不给,结果为:on最牛B
      print(s2[:-1])  # 从开始截取到最后,不包含最后一个,结果为:python最牛
      print(s2[:])    # 从头取到尾,结果为:python最牛B
      print(s2[-1:-5])# 取不到任何结果,因为默认应该从左往右截取
      print(s2[-5:-1])# 从倒数第5个字符开始向右截取到倒数第1个字符,结果为:on最牛
    

     通过上边知道切片默认是从左向右截取,我们可以给出第三个参数来控制方向,第三个参数叫步长,步长为负数时,则从右往左取值。

    • 语法:str[start:end:step] 
    • start : 起始位置
    •  end : 结束位置
    • step : 步长(步长如果是整数,则从左往右取,如果是负数,则从右往左取,默认是1

     如下列代码示例:

    #         0123456 7 8
      s3 = "python最牛B"
      print(s3[1:5:2])   # 从下标为1的字符开始,取到下标为5(且不包含下标为5的值),每两个取1个,结果为yh
      print(s3[:5:2])    # 从开始取到下标为5的字符,每两个取1个,结果为:pto
      print(s3[4::2])    # 从下标为4的字符取到最后一个字符(包含最后一个字符),每两个取1个,结果为:o最B
      print(s3[-5::2])   # 从倒数第5个取到最后,每两个取1个,结果为:o最B
      print(s3[-1:-5])   # 取不到结果,因为默认是从左向右截取
      print(s3[-1:-5:-1])# 步长为负数,表示从右往左取值,结果为:B牛最n
      print(s3[-5::-3])  # 步长为-3,从倒数第5个开始,从右往前,取到最开始的字符(包含第一个),每3个取1个,结果为:oy
    

     字符串的相关操作方法: 

    • s1.capitalize()      # 首字母大写,其他字母都变成小写
    • s1.lower()            # 全部转换成小写
    • s1.upper()            # 全部转换成大写,记住!!!
    • s1.swapcase()     # 大小写互相转换
    • s1.casefold()       # 转换成小写,和lower相比,casefold()对所有字母都有效,比如东欧的一些字母
    • s1.title()              # 每个被非字母字符隔开的单词首字母大写
    • s1.center()         # 居中,
    示例:s5 = “周杰伦”
    
    ret = s5.center(10 , “*”)
    
    • s1.expandtabs()   # 改变\t的长度,更改为8
    • s1.strip()              # 去掉字符串左右两端空格(还有换行符\n,缩进\t),也可以加参数去掉指定的元素,记住!!!
    • s1.lstrip()             # 去掉字符串左边空格
    • s1.rstrip()             # 去掉字符串右边空格
    • s1.replace(“原字符”,“新字符”)  # 将原字符替换成新字符,也可以再加一个参数指定替换几个,记住!!!
    • s1.split()              # 字符串按照指定字符切割(注意:如果切割符在左右两端,则切完一定出现空字符串),还可以跟第二个参数,表示根据第几个指定字符分割,记住!!!

    注意:split默认是按照空白切割!具体示例如下:

     a = "al    ex  ha  nishi shui"
        lst = a.split()
        print(lst)
        # 结果为:['al', 'ex', 'ha', 'nishi', 'shui']  

    格式化输出

      s12 = "我叫%s,今年%s岁了,我喜欢%s" % ('sylar', 18, '周杰伦')  # 之前的写法
      s13 = "我叫{},今年{}岁了,我喜欢{}".format('周杰伦', 28, '周润发')  # 按位置格式化
      s14 = "我叫{0},今年{2}岁了,我喜欢{1}".format('周杰伦', '周润发', 28)  # 指定位置
      s15 = "我叫{name},今年{age}岁了,我喜欢{singer}".format(name='周杰伦', singer='周润发', age=28)  # 指定关键字 
    也可以用.format()来做格式化输出
    print('{} a word han can get with she {}'.format('w','z'))
    print('{a} l {b}'.format(a='wqz',b='ztt'))
    print('{0}l{1}'.format('q_sir','TT'))

    查找 

           s13.startswith()  # 是否以指定字符开头,记住!!!
    
           s13.endswith()   # 是否以指定字符结尾,记住!!!
    
           s13.count()        # 查找指定字符在字符串中出现的次数
    
           s13.find()          # 查找指定字符的索引,若没有所查找字符,则返回-1
    
           s13.index()       # 求指定字符索引,注意:若找不到,程序会报错

    条件判断

        s14.isalnum()      # 是否由字母和数字组成
    
      s14.isalpha()      # 是否由字母组成(包括汉字)
    
      s14.isdigit()        # 是否由数字组成,不包括小数点
    
      s14.isdecimal()  # 这个比较牛,中文数字也能识别
    
      s14.islower()      # 是否是小写字母
    
      s14.isupper()      # 是否是大写字母     
    

    计算字符串的长度 

    s18 = "我是你的眼,我也是a"
    print(len(s18))  # 10  

    迭代 

           我们可以使用for循环来遍历(获取)字符串中的每一个字符。
    
           语法:
    
        for 变量 in 可迭代对象 :
    
                         pass(也存在break和continue)  
    
        else:
    
                         当循环正常结束的时候会执行
    
           可迭代对象:可以一个一个往外取值的对象。
    
    • 添加到短语集
       
      • 没有此单词集:英语 -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:中文(简体) -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:中文(简体) -> 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
  • 相关阅读:
    智能交通监控
    YOLOV4知识点分析(二)
    YOLOV4知识点分析(一)
    错误日志写入到本地磁盘(lock 队列)
    $.each(data, function (index, value) { })的用法;json和list<>的互相转换
    ArraySegment 的使用 【转载】
    Ajax往后台传参数,无参数,一个参数,多个参数,一个对象等
    在gridview里查找模板里的button控件
    数据可视化之PowerQuery篇(十六)使用Power BI进行流失客户分析
    数据可视化之PowerQuery篇(十五)如何使用Power BI计算新客户数量?
  • 原文地址:https://www.cnblogs.com/wqzn/p/9391263.html
Copyright © 2011-2022 走看看