字符串

  1、一个个字符组成的有序的序列,是字符的集合;
  2、使用单引号、双引号、三引号引住的字符序列
  3、字符串是不可变对象
  4、python3起,字符串就是Unicode类型;

字符串特殊举例:

  不对\n或者\t做处理的三种方式:

    test=r'hello \n word'

    test=R'hello \n word'

    test='hello \\n word'  #对\n进行转译

字符串元素访问

  1、字符串支持下标访问 

    t='hello word'
    print(t[2])

  2、字符串的每个字符都是有序序列,可以被迭代    

    t='hello word'
    for i in t:
      print(i)

    print(list(t))  #用list模块可以将字符串以列表的形式打印出来;

    ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'd']

字符串join连接

  "string".join(iterable) --> str
  将可迭代对象连接起来,使用string作为分隔符;
  可迭代对象本身元素都是字符串
  返回一个新的字符串

    t='hello word'
    print("-".join(t))

    返回结果:h-e-l-l-o- -w-o-r-d

  注意:python是强类型语言,字符串的拼接不能用到int型数字上,需要用map函数转化;

    lst=list(range(5))
    print("-".join(map(str,lst)))

    返回结果:0-1-2-3-4    

    a=list(range(5))
    print(list(map(str,a)))

    返回结果:['0', '1', '2', '3', '4']

字符串“+”号的连接  

    print("aaa"*2)
    print("bbb"+"aaa")

    返回结果:     

    aaaaaa
    bbbaaa

字符串的分割

  split(sep=None,maxsplit=-1) --> list of strings  从左至右
  sep指定分割字符串;缺省情况下空白字符串作为分割符
  maxsplit指定分割的次数,-1表示遍历整个字符串;
  rsplit 从右至左切

    t='hewllo wowrd'
    print(t.split("w"))
    print(t.split("w",maxsplit=1))
    print(t.split("w",maxsplit=2))
    print(t.split("w",maxsplit=3))
    print(t.split("w",maxsplit=4))

      注:maxsplit可以直接省略不写"print(t.split("w",3))"

    执行结果:    

    ['he', 'llo ', 'o', 'rd']    #默认跟据出现的所有w做切割;
    ['he', 'llo wowrd']     #从左到右,用第一个w切割;
    ['he', 'llo ', 'owrd']    #从左到右,用前两个w切割;

    ['he', 'llo ', 'o', 'rd']    #从左到右,用前三个w切割;
    ['he', 'llo ', 'o', 'rd']    #如果超出指定的次数,则默认跟据出现的所有w做切割;

字符串大小写

  upper() 全大写
  lower() 全小写
  swapcase() 交互大小写   

    t='hello word'
    print(t.upper())
    d='HELLO WORD'
    print(d.lower())

    c='Hello Word'
    print(c.swapcase())

    执行结果:   

    HELLO WORD
    hello word
    hELLO wORD

字符串排版

  title() 标题每个字母都大写
  capitalize() 首个单词大写
  center(width[,fillchar])
  width 打印宽度
  fillchar 填充的字符
  zfill(width)
  width 打印宽度,居右,左边用0填充;
  ljust(width[,fillchar])  #str左对齐
  rjust(width[,fillchar])  #str右对齐    

    t='hello word'
    print(t.title())
    print(t.capitalize())
    print(t.center(20,"*"))
    print(t.zfill(20))
    print(t.ljust(20,"*"))
    print(t.rjust(20,"*"))

    执行结果:    

    Hello Word
    Hello word
    *****hello word*****
    0000000000hello word
    hello word**********
    **********hello word

字符串的修改

  replace(old,new[,count])
  字符串中找到匹配替换为新子串,返回新的字符串;
  count表示替换几次,不指定就是全部替换;
  strip([chars])
  从字符串两端去除指定的字符集chars中的所有字符;
  如果chars没有指定,去除两端的空白字符;
  lstrip() 从左开始
  rstrip() 从右开始

    示例:   

    t=' hello word hello wordh '
    print(t.replace("w","W",1))    #小写w替换为大写w;并且替换1次;
    print(t.strip("h"))   #去除两端的h;
    print(t.lstrip("h"))  #去除左边的h字符串;
    print(t.rstrip("h"))  #去除右边的h字符串;

    返回结果:    

    hello Word hello wordh
    ello word hello word
    ello word hello wordh
    hello word hello word

字符串查找

  find(sub[,start[,end]])
  在指定的区间[start,end);从左至右,查找子串sub,找到返回索引,没找到返回-1;
  rfind(sub[,start[,end]])
  在指定的区间[start,end);从右至左,查找子串sub,找到返回索引,没找到返回-1;
  index(sub[,start[,end]])
  在指定的区间[start,end);从左至右,查找子串sub,找到返回索引,没找到则抛出异常ValueError
  count(sub[,start[,end]])
  在指定的区间[start,end);从左至右,统计子串sub出现的次数;

  时间复杂度
  index和count方法都是O(n)
  随着列表数据规模的增大,而效率下降;
  len(string)
  返回字符串的长度,即字符的个数;

  #enumerate()  该函数可以显示字符串下标  

  s = "i love you"
  list(enumerate(s))

    示例:

      t='hello word hello hello'
      print(list(enumerate(t)))
      print(t.find("h",12))
      print(t.index("h",12))
      print(t.count("h"))

    运行返回结果:

      [(0, 'h'), (1, 'e'), (2, 'l'), (3, 'l'), (4, 'o'), (5, ' '), (6, 'w'), (7, 'o'), (8, 'r'), (9, 'd'), (10, ' '), (11, 'h'), (12, 'e'), (13, 'l'), (14, 'l'), (15, 'o'), (16, ' '), (17, 'h'), (18, 'e'), (19, 'l'), (20, 'l'), (21, 'o')]
      17
      17

      3

字符串判断

  endswith(suffix[,start[,end]]) -> bool
  在指定的区间[start,end),字符串是否是suffix结尾
  startswith(prefix[,start[,end]]) -> bool
  在指定的区间[start,end),字符串是否是prefix开头

    t='hello word'
    print(list(enumerate(t)))
    print(t.endswith("o",5,8))  #在5到8的区间内,是否是以字母o结尾;
    print(t.startswith("l",3,5))  #在3到5区间内,是否是以字母i开头;

    执行结果:

    [(0, 'h'), (1, 'e'), (2, 'l'), (3, 'l'), (4, 'o'), (5, ' '), (6, 'w'), (7, 'o'), (8, 'r'), (9, 'd')]

    True

    True

  is系列
    isalnum()bool是否是字母和数字组成;
    isalpha()是否是字母
    isdecimal()是否只包含十进制数字
    isdigit()是否全部数字(0--9)
    isidentifier()是不是字母和下划线开头,其他都是字母数字下划线;
    islower()是否全部小写
    isupper()是否全部大写
    isspace()是否只包含空白字符

      示例:  

      a='123hello'
      print(a.isalnum()) 

      执行结果:

      True

字符串格式化

  字符串的格式化是一种拼接字符串输出样式的手段;
  join拼接只能是用分隔符,且要求被拼接的是可迭代对象;
  +拼接字符串方便,但是非字符串需要先转换为字符串才能拼接;

  占位符:使用%和格式字符组成,例如%s,%d;
  s调用str();r会调用repr();所有对象都可以被这两个转换;
  占位符中还可以插入修饰字符,例如%03d表示打印3个位置,不够前面补0;
  format % vlaues;格式字符串和被格式的值之间使用%分隔;
  values只能是一个对象,或是一个和格式字符串占位符数目相等的元组,或一个字典;

format()函数

  format函数格式字符串语法--python鼓励使用
  "{}{xxx}".format(*args,**kwargs) --> str
  args是位置参数,是一个元组;
  kwargs是关键字参数,是一个字典;
  花括号表示占位符;
  {}表示按照顺序匹配位置参数,{n}表示取位置参数所以为n的值;
  {xxx}表示在关键字参数中搜索名称一致的;
  {{}}表示打印花括号;

浮点数

  print("{}".format(3**0.5))
  print("{:g}".format(3**0.5))
  print("{:f}".format(3**0.5))
  print("{:10f}".format(3**0.5)) ##右对齐
  print("{:2}".format(3**0.5)) ##宽度为2
  print("{:.2}".format(3**0.5)) ##2个数子
  print("{:.2f}".format(3**0.5)) ##保留2为小数
  print("{:3.2f}".format(3**0.5)) ##宽度为3,小数点后2位
  print("{:3.3f}".format(0.2745))
  print("{::3.3%}".format(1/3))

bytes / bytearray

  python3 引入两个新的类型
  bytes:不可变字节序列
  bytes是字节组成的有序的不可变序列
  使用b前缀定义
  只允许基本的ascii使用的字符形式b'abc9'
  使用16禁止表示b"\x41\x61"
  bytearray:
  字节组成的有序的可变序列
  从一个字节序列或者buffer复制出一个新的可变的bytearray对象
  编码与解码
  字符串按照不同的字符集编码encode返回字节序列bytes
  encode(encoding='utf-8',errors='strict') --> bytes
  字节序列按照不哦她那个的字符集解码decode返回字符串
  bytes.decode(encoding="utf-8",errors="strict") --> str
  bytearray.decode(encoding="utf-8",errors="strict") --> str

  

python3学习笔记之字符串的更多相关文章

  1. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  2. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  3. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  4. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)

    技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...

  5. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  6. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  7. 【学习笔记】字符串—马拉车(Manacher)

    [学习笔记]字符串-马拉车(Manacher) 一:[前言] 马拉车用于求解连续回文子串问题,效率极高. 其核心思想与 \(kmp\) 类似:继承. --引自 \(yyx\) 学姐 二:[算法原理] ...

  8. 「学习笔记」字符串基础:Hash,KMP与Trie

    「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...

  9. python3学习笔记(8)_sorted

    # python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进 ...

随机推荐

  1. Spring 源码(11)Spring Bean 的创建过程(2)

    Spring Bean 的创建过程介绍了FactoryBean 的创建方式,那么接下来介绍不是FactoryBean的创建方式,在创建过程中,又会分为单例的Bean的创建,原型类型的Bean的创建等. ...

  2. 【算法】基数排序(Radix Sort)(十)

    基数排序(Radix Sort) 基数排序是按照低位先排序,然后收集:再按照高位排序,然后再收集:依次类推,直到最高位.有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序.最后的次序就 ...

  3. 新建Vue项目记得几个配置

    1.在APP.vue文件夹中进行CSS初始化 2.下载vuex,vue-router,并配置 3.关闭语法检查vue.config.js 4.按需引入组件库

  4. 『忘了再学』Shell基础 — 20、Shell中的运算符

    目录 1.Shell常用运算符 2.Shell中数值运算的方法 (1)方式一 (2)方式二 (3)方式三(推荐) 1.Shell常用运算符 Shell中常用运算符如下表: 优先级数值越大优先级越高,具 ...

  5. ML第一周学习小结

    最近的学习内容为<Python机器学习基础教程>这本书 从第一章开始,慢慢来,比较快. 一下为我的本周机器学习小结,以及下周的Flag. 本周收获 总结一下本周学习内容: 1.了解到机器学 ...

  6. 竟然还有人说ArrayList是2倍扩容,今天带你手撕ArrayList源码

    ArrayList是我们开发中最常用到的集合,但是很多人对它的源码并不了解,导致面试时,面试官问的稍微深入的问题,就无法作答,今天我们一起来探究一下ArrayList源码. 1. 简介 ArrayLi ...

  7. 【Java面试】Mysql为什么使用B+Tree作为索引结构

    一个工作8年的粉丝私信了我一个问题. 他说这个问题是去阿里面试的时候被问到的,自己查了很多资料也没搞明白,希望我帮他解答. 问题是: "Mysql为什么使用B+Tree作为索引结构" ...

  8. VSCode配置远程免密登陆

    生成秘钥 在本地pc的cmd窗口输入:ssh-keygen -t rsa 生成秘钥 C:\Users\NZY/.ssh/id_rsa.pub 该目录就是生成的秘钥要保存的地方(以我自己的电脑为例) 将 ...

  9. 批处理(bat、cmd)命令总结

    2021-07-21 初稿 注释与回显 rem 回显 @取消单行回显 rem 注释有三种方式 :: %content% rem rem @取消单行回显,echo off取消后面的回显 @echo of ...

  10. Solon 1.8.3 发布,云原生微服务开发框架

    相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...