python-string

Python - 字符串

  1. 访问

    s2="python"
    print(s2[1]) #y
    print(s2[-1]) #n
    
    user_id='admin001'
    #1.
    for i in user_id:    #重点
        print(i,end=' ')
    #2.
    len_id=len(user_id)
    for i in range(len_id):
        print(user_id[i],end=' ')
    print()
    #3.
    for i in range(len_id):
        print(user_id[i:i+1],end=' ')  #切出新的值,i
    

    判断用户名是否全是小写字母demo

    for i in user_id:
        if not ('a'<=i<='z'):
            break
        else:
            print('ok')
    
  2. 切片 重点

    • 顺序切片
      s1='i love python'
      print(s1[2:6])     #love
      print(s1[11:])     #on
      print(s1[-2:])     #on
      print(s1[-6:-2])   #pyth
      print(s1[-6:2])    #切不到
      print(s1[-6:12])   #pytho
      print(s1[:])       #全部,拷贝字符串
      
    • 字符串,变量驻留机制
      s2=s1
      print(s1==s2)
      print(s1 is s2)#True
      
      s3=s1[:]
      print(s1==s3)
      print(s1 is s1[:])#True
      
      小整数对象池和大整数对象池
      1. 小整数对象池

        整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。

        Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,

        所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。

      2. 大整数对象池。

        终端是每次执行一次,所以每次的大整数都重新创建,而在pycharm中,每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象。

    • 跳跃切片
      s4='abcdefg'
      print(s4[::2])#aceg,2代表步长
      print(s4[-3:2:-1])#ed反向切
      print(s4[-3:12:1])#efg
      print(s4[::-1])   #反转,面试题
      
      长度为20时显示…demo
      content='To improve your experience, we would like to collect data on the plugins and features you use. No personal data will be collected. An archive of a few kilobytes will be sent weekly.'
      if len(content)>20:  #如果内容的长度大于20就显示前17个字符和...否则就输出
          con=content[0:17]+'...'
      else:
          con=content
      print(con)
      con=content if len(content)<=20 else content[0:17]+'...'
      print(con)
      
  3. 连接符

    s1='py'
    s2='thon'
    s3=s1+s2
    s3=s1*3     #字符串的重复   pypypy
    
  4. 格式输出 重点

    u_name='python'
    u_age=20
    print('i am {0},and i am {1} year old'.format(u_name,u_age))
    print('i am {1},and i am {0} year old'.format(u_age,u_name))
    print('i am {0:10s},and i am {1} year old'.format(u_name,u_age))
    u_name='{0:10s}'.format(u_name)         #'python    '
    print('i am {nn},and i am {aa} year old'.format(nn=u_name,aa=u_age))#用这种比较好
    
  5. 内建函数

    1. count()

      返回 str在start和end之间 在 mystr里面出现的次数

      mystr.count(str, start=0, end=len(mystr))

      str='hello world hello china'
      
      num=str.count('hello',0,len(str))
      
      print(num)
      

      找出现频率最高的字母demo

      s1='hello world hello china'
      ss1=''                  #用于放不重复的字母
      for i in s1:
          if ss1.count(i)==0: #如果ss1里没有该字母就添加进去
              ss1=ss1+i
      max=0;                  #用于存放最高出现次数
      ch=''                   #用于存放出现次数最多的字母
      for i in ss1:
          m=s1.count(i)       #统计ss1中不重复字母在s1中的个数
          if max<m:
              max=m
              ch=i
          print(ch,max)
      
    2. find()

      检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1

      mystr.find(str, start=0, end=len(mystr))

      word='hello python,hello,world'
      f='hello' in word
      print(f)#true
      res01=word.find('hello',4,22)#13
      print(res01)#13
      
    3. replace

      把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

      mystr.replace(str1, str2, mystr.count(str1))

      word='hello python,hello,world'
      res02=word.replace('hello','hi',2)
      
    4. split():非常重要

    date='2018-3-1'
    times=date.split('-')
    print(times[0])  #2018
    

    如果字符串中有多个分隔符,就需要用正则表达式

    1. join()
    s2=['2018','3','1']
    s3='-'
    s4=s3.join(s2)
    print(s4)#2018-3-1
    
    arr=list(word)
    str_arr=','.join(arr)
    print(str_arr)#h,e,l,l,o, ,p,y,t,h,o,n,,,h,e,l,l,o,,,w,o,r,l,d
    str2='python'.join(['_one_','_two_','_three_'])#_one_python_two_python_three_
    
    1. isdigit()

    如果 mystr 只包含数字则返回 True 否则返回 False.

    f='3.14'
    print(f.isdigit())#false,包含.
    
    1. isalpha()

    如果 mystr 所有字符都是字母 则返回 True,否则返回 False

    mystr.isalpha()
    
    1. isalnum

    如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False

    重点:以后项目中肯定用得到

    判断密码是否由数字字母下划线组成

    flag=True
    for i in pwd:
    if not (i.isalnum() or i=='_'):
        flag=False
        break
    print(flag)
    
    
  6. upper() lower()

  7. strip() lstrip() rstrip() len(s)

    strip:去掉前后空格

    len:公共方法,有长度就能用,数组和字符串

  8. 补充

    方法描述
    string.capitalize()把字符串的第一个字符大写
    string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
    string.count(str, beg=0, end=len(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
    string.decode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 ‘ignore’ 或 者’replace’string.encode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
    string.endswith(obj, beg=0, end=len(string))检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
    string.expandtabs(tabsize=8)把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
    string.find(str, beg=0, end=len(string))检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
    string.format()格式化字符串string.index(str,beg=0,end=len(string))
    string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
    string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
    string.isdigit()如果 string 只包含数字则返回 True 否则返回 False.
    string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
    string.isnumeric()如果 string 中只包含数字字符,则返回 True,否则返回 False
    string.isspace()如果 string 中只包含空格,则返回 True,否则返回 False.
    string.istitle()如果 string 是标题化的(见 title())则返回 True,否则返回 False
    string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
    string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
    string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
    string.lower()转换 string 中所有大写字符为小写.、
    string.lstrip()截掉 string 左边的空格
    max(str)返回字符串 str 中最大的字母。
    min(str)返回字符串 str 中最小的字母。
    string.partition(str)有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
    string.replace(str1, str2, num=string.count(str1))把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
    string.rfind(str, beg=0,end=len(string) )类似于 find()函数,不过是从右边开始查找.
    string.rindex( str, beg=0,end=len(string))类似于 index(),不过是从右边开始.
    string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
    string.rpartition(str)类似于 partition()函数,不过是从右边开始查找.
    string.rstrip()删除 string 字符串末尾的空格.
    string.split(str="", num=string.count(str))以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
    string.splitlines([keepends])按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
    string.startswith(obj, beg=0,end=len(string))检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
    string.strip([obj])在 string 上执行 lstrip()和 rstrip()
    string.swapcase()翻转 string 中的大小写
    string.title()返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
    string.upper()转换 string 中的小写字母为大写
    string.zfill(width)返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0
    string.isdecimal()isdecimal()方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
  9. 帮助文档

    user_id ='admin'
    print(dir(user_id))#输出所有方法
    print(help(user_id.strip))#输出该方法的功能
    
  10. 字符编码 熟记

    encode() 将字符串编码为字节码;decode() 将字节码解码为字符串

    # -*- coding: UTF-8 -*-
    
    # python3字符串编码默认就是unicode
    word='hello python,hello world,hellojapan 你好 中国'
    
    # 将字符串编码为utf-8的字节流格式
    byte_utf_word=word.encode('utf-8')
    print(byte_utf_word)
    
    #将字节流解码为字符串
    str_utf_word=byte_utf_word.decode('utf-8')
    
    # 将字符串编码为GBK的字节流格式
    byte_gbk_word=word.encode('GBK')
    
    str_gbk_word=byte_gbk_word.decode('GBK')
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值