Python基础知识9: 字符串

一、字符串的定义

  • 1.1、字符串 就是 一串字符,是编程语言中 表示文本的数据类型

  • 1.2、在 Python 中可以使用一对双引号 "或者一对单引号 ' 定义一个字符串(推荐使用双引号 ",因为绝大多数的语言字符串都是用双引号)

    • 如果字符串内部需要使用 ",可以使用 '定义字符串
    • 如果字符串内部需要使用 ',可以使用 "定义字符串
  • 1.3、 可以使用 索引 获取一个字符串 中 指定位置的字符,索引的计数从 0 开始

    string = "hello Python"
    print(string[1])
    
  • 1.4、也可以使用 for 循环遍历 字符串中每一个字符

    string = "hello Python"
    for c in string:
          print(c)
    

二、字符串的常用操作

  • 2.1、统计字符串的长度

    string = "hello Python"
    print(len(string))
    打印结果是:12
    
  • 2.2、统计一个字符或者字符串在另外一个字符串里面出现的次数

    string = "hello Python"
    print(string.count("o"))
    打印结果是:2
    
  • 2.3、某一个子字符串在大字符串中第一次出现的索引,如果在另外一个字符串(大字符串)里面不存在就会报错

    string = "hello Python"
    print(string.index("P"))
    打印结果是:6
    print(string.index("p"))  # 报错
    

三、字符串的方法分类

  • 3.1、判断类型(9个)

    方法 说明
    string.isspace() 如果 string 中只包含空字符串(\t、\r、\n),则返回 True
    string.isalnum() 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True
    string.isalpha() 如果string 至少有一个字符并且所有字符都是字母则返回True
    string.isdecimal() 如果string 只包含数字则返回 true,全角数字(也就是阿拉伯数字:1234)
    string.isdigit() 如果 string 只包含数字则返回True,(1),\u00b2
    string.isnumeric() 如果string 只包含数字则返回True,全角数字,汉字数字
    string.istitle() 如果 string 是标题华的(每个单词的首字母大写)则返回 True
    string.islower() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True
    string.isupper() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True
    • 简单举例(1): 判断string 中只包含空字符串,(\t: 垂直对齐、\r: 回车、\n: 换行)也是空字符

      stringSpace = "     \t"
      print(stringSpace.isspace())
      打印结果是
      True
      
    • 简单举例(2): 判断string 至少有一个字符并且所有字符都是字母或数字则返回 True

      string = "123,PPP"
      print(string.isspace())
      打印结果是
      False
      
    • 简单举例(3): 判断数字的三个方法:string.isdecimal(),string.isdigit(),string.isnumeric(),判断的范围是逐渐扩大

      • 第一点:三个方法都不可以判断小数

        number_str = "1.3"
        
        print(number_str.isdecimal())
        print(number_str.isdigit())
        print(number_str.isnumeric())
        打印结果是:
        False
        False
        False
        
      • 第二点:isdecimal()只可以判断全角数字,也就是只能判断阿拉伯数字:1234567......

      • 第三点:isdigit()在isdecimal()的基础上还可以判断 unicode 字符串

      • 第四点:isnumeric()在isdigit()的基础上还可以判断 中文字符,如: 一二三四百千万

  • 3.2、查找和替换(7个)

    方法 说明
    string.startswith(str) 检查字符串是否是以 str开头,是则返回 True
    string.endswith(str) 检查字符串是否是以 str结束,是则返回 True
    string.find(str,start=0,end=len(string)) 检测 str 是否包含在 string 中,如果是 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1
    string.rfind(str,start=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找
    string.index(str,start=0,end=len(string)) 跟 find() 方法类似,不过如果 str 不在 string 会报错
    string.rindex(str,start=0,end=len(string)) 类似于 index() 函数,不过是从右边开始
    string.replace(old_str,new_str=0,num=string.count(old)) 把string 中的old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次
    • 简单举例(1): 检查字符串是否是以 str开头,是则返回 True

      string= "str I Love You !"
      print(string.startswith("str"))
      打印结果是:
      True
      
  • 3.3、大小写转换(5个)

    方法 说明
    string.capitalize() 把字符串的第一个字符大写
    string.title() 把字符串的每个单词首字母大写
    string.lower() 转换 string 中 所有大写字符为小写
    string.upper() 转换 string 中 所有小写字母为大写
    string.swapcase() 翻转 string 中的大小写
    • 简单举例(1): 把字符串的每个单词首字母大写(每个单词之间有空格才代表一个单词)

      string = "str i love you !"
      print(string.title())
      打印结果是:
      Str I Love You !
      
  • 3.4、文本对齐(3个),记得输入一个字符串的宽度

    方法 说明
    string.ljust(width) 返回一个字符串左对齐,并使用空格填充至长度 width 的新字符串
    string.rjust(width) 返回一个字符串右对齐,并使用空格填充至长度 width 的新字符串
    string.center(width) 返回一个字符串居中,并使用空格填充至长度 width 的新字符串
    • 简单举例(1):返回一个字符串居中,并使用空格填充至长度 width 的新字符串

      string = "    str i love you !I want to play      "
      print(string.center(10)) 
      #  如果想要英文也对齐,那么就要增加 中文空格: 
      # print(string.center(10," "))
      打印结果是:
           str i love you !I want to play    
      
  • 3.5、去除空白字符(3个)

    方法 说明
    string.lstrip() 截掉 string 左边 (开始) 的空白字符
    string.rstrip() 截掉 string 右边 (末尾) 的空白字符
    string.strip() 截掉 string 左右两边的空白字符
  • 3.6、拆分和连接(5个)

    方法 说明
    string.partition(str) 把字符串 string 分成一个 3 元素的元组(str前面,str,str后面) 返回值是:元组
    string.rpartition(str) 类似于 partition() 函数,不过是从右边开始查找 返回值是:元组
    string.split(str,num) 以 str 为分隔符切片string ,如果 num 有指定值,则仅分割 num + 1 个字符串,str 默认包含 \r,\t,\n 和 空格,返回值是列表
    string.splitlines() 按照行(\r,\t,\n)分割,返回一个包含各行作为元素的列表
    string.join(seq) 以string 作为 分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
    • 简单举例(1):以 str 为分隔符切片string ,如果 num 有指定值,则仅分割 num + 1 个字符串,str 默认包含 \r,\t,\n 和 空格,返回值是列表

      string  = "str i love you y!I want to play"
      print(string.split("y",1)) # 代表分割成的列表是 `2+1` 个元素
      打印结果是:
      ['str i love ', 'ou y!I want to play']
      print(string.split("y",2)) # 代表分割成的列表是 `2+1` 个元素
      打印结果是:
      ['str i love ', 'ou ', '!I want to play']
      

四、字符串的切片

  • 4.1、 切片 方法 适用于 字符串列表元组

    • 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
    • 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
    • 字典 是一个 无序的集合,是使用 键值对 保存数据


      切片图
    • 字符串[开始索引:结束索引:步长]
    • 注意:
      • 指定区间属于 左闭右开型 :从起始 位开始,到 结束 位的前一位 结束 (不包含结束位本身)
      • 从头开始,开始索引 数字可以省略,冒号不能省略
      • 到末尾结束,结束索引 数字可以省略,冒号不能省略
      • 步长默认为 1,如果连续切片,数字和冒号都可以省略
  • 4.2、看下面的几个例子练习
    最初的字符串都是 string = "Hi boy,I Love You"

    • 截取从 2~5 位置的字符串(因为是右边是开区间,所以要写到第6位)

      print(string[2:6]) # 因为步长为 1,后面的 :1 可以省略
      
    • 截取从 2~末尾 的字符串

      print(string[2:]) 
      
    • 截取从 开始~5 位置的字符串

      print(string[0:6]) 
      
    • 截取完整的字符串

      print(string[:]) 
      
    • 从开始位置,每隔一个字符串截取字符串( 步长一看就是 2)

      print(string[::2]) 
      
    • 从索引 1 开始,每隔一个取一个

      print(string[1::2]) 
      
    • 截取从 2~末尾-1 的字符串

      print(string[2:-1]) 
      
    • 截取字符串末尾两个字符

      print(string[-2:]) # 因为步长为 1,后面的 :1 可以省略
      
    • 字符串的逆序

      print(string[::-1])
      print(string[-1::-1]) 
      
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,639评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,093评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,079评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,329评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,343评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,047评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,645评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,565评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,095评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,201评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,338评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,014评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,701评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,194评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,320评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,685评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,345评论 2 358

推荐阅读更多精彩内容