第四节 字符串

news2024/11/25 20:30:33

文章目录

  • 字符串
    • 1.1 字符串介绍
    • 1.2 字符串的定义
    • 1.3 字符串的输入和输出
      • 1.3.1 字符串的索引
    • 1.4 字符串切片
      • 1.4.1 切片几种写法
    • 1.5 字符串常用函数
      • 1.5.1 find()
      • 1.5.2 index()
      • 1.5.3 扩展知识: rfind()和rindex()
      • 1.5.4 count()
      • 1.5.5 replace()
      • 1.5.6 split()
      • 1.5.7 join()
    • 1.6 字符串Api 扩展知识
    • 1.7 练习: 字符串综合练习

字符串

  • 掌握字符串的输入和输出
  • 会使用切片的方式访问字符串中的值
  • 了解常见函数

1.1 字符串介绍

  1. 什么是字符串?
    • 其实说到字符串,这个概念没有具体的说法,但是我们根据平时的归纳总结,相当于文本类型,
    • 字符串就是把字符连在一直,串成一串又一串;字符串内可以包含数字、字母、特殊符号等所有内容;
    • 在Python中只要对一些内容加上对双引号或一对单引号,就默认为是字符串;

1.2 字符串的定义

  1. 定义字符串的格式有三种形式:

    • 单引号
    # 格式1: 单引号
    name = '王一博'
    
    • 双引号
    # 双引号
    name = "王一博"
    
    • 三引号, 可以自由变化输出格式
    #三引号
    name = '''王一博'''
     
    # 三引号的定义什么样,输出就什么样? 是一种有格式的.
    name_2 = '''
    			i ma 
    			王一博
    		'''
    
    • 如何输出单引号
    # 想输出的带上字符串格式的, 只需要使用双引号,里面包含单引号即可.
    name= " 我是'王一博' "
    print(name) # 输出格式为: 我是'王一博'.
    
    1. 转义字符的使用
    • 如果在双引号中输出单引号是可以的,但是如果在单引号中输出单引号呢?
    • 这就需要使用转义字符 \ \
      #c = '你好我是  '王一博'' 这样的形式是错误的?
      c = '你好我是  \'王一博\''
      print(f"转义字符输出格式:{c}")
      

1.3 字符串的输入和输出

  1. 从控制台接收一个 输入,它的类型就是字符串。
    • 使用的函数是 input()
    • 注意: 如果想使用其他类型的需要转换格式. 如: 将输入的 字符串类型转换为int()
    """
    1. 字符串的输入和输出
        输入需要是使用 input的函数
            注意输入的类型是 string 类型.
    """
    
    # 1. 从控制台输入姓名,输入类型是 string 类型
    name = input("请输入姓名: ")
    print(type(name)) # 查看数据类型 type()
    print(name)
    
    #2. 从控制台输入一个年龄,(需要注意年龄的数据类型应该是整形)
    age = int(input("请输入年龄 : ")) # 通过使用int()数据类型转换将str类型转为int类型
    print(type(age)) # 查看数据类型 type()
    print(age)
    
  2. 字符串的输出
    • 使用的函数是 print()
    """
    1.字符串的输出有几种形式
        使用的函数是 input()
            直接输出
            字符串格式化 f"{},{}"
            占位符方式   %s 字符串
                       %d  数字
                       %f 小数
                print("我的名字%s"%name)
                print("%s,%d"%(name,age))
    
    """
    
    name = "王一博 "
    age = 18
    
    #第一种输出方式
    print(name,age)
    
    #第二种输出方式 字符串格式化
    print(f"我是,{name},我的年龄,{age}")
    
    
    # 单个占位符输出
    print("名字%s"%name)
    #多个占位符输出
    print("我的名字%s,我的年龄%d"%(name,age))
    

1.3.1 字符串的索引

  1. 字符串的每一个字符都是有编号的.

    • 索引, 下标,脚标,index ,为什么有这么多的名称 ?
    • 字符串的索引是从0 开始的.
    • 正数索引从0开始负数索引,从 -1 开始
      在这里插入图片描述
  2. len()方法 和 字符串[索引]

    • 字符串[索引] # 根据字符串索引, 来获该索引位置的字符.
      • 正数索引 ,从前往后数
      • 负数索引,从后往前数负数开始时-1.
    • len(字符串)方法是 获取字符串的长度
    """
    1. 字符串的下标是从零开始的.
        为什么会有脚标,下标,索引 ,index这么多称呼
    
        主要是翻译问题, 翻译文献导致每个翻译词汇不同,但指的是一个意思
    
        常用格式
            字符串[索引]  # 根据字符串索引, 来获取该字符.
            len(字符串)  获取字符串的长度
    2. 有正数索引
        也有负数索引
                正数: 从前往后
                负数: 从后往前
    
    
    """
    
    s = "helo "
    
    a= s[0] # 从零开始,通过索引获取字符.
    b= len(s) # 空格也算位置.
    print(a,b)
    
    print("-"*20) #复制 "-"
    
    # 负数索引
    a_1 = s[-3]
    print(a_1)
    
    
    
    
  3. 扩展知识 :

    • 字符串最大长度
    s = "helo "
    # 可以得知一个字符串最大索引是?
    print(int(len(s)-1))   #相当于字符串的最大长度-1
    

1.4 字符串切片

  1. 在 Python 中,字符串切片指的是从一个字符串中选取一部分子串的操作.

    • 可以理解为 截取字符串.
    • 需要通过 索引 实现
  2. 注意事项: 包左不包右。 中间使用 : 冒号隔开.

    	string[start:end:step]
    
    • 其中 string 表示要进行切片的字符串,start 表示起始索引(默认为 0),end 表示结束索引(默认为字符串的长度),step 表示步长(默认为 1)。
  3. 字符串切片,操作还支持快捷语法,如果不指定起始索引和步长,可以直接写成 string[:end]string[start:]或者string[:]

  4. 举例来说, 假设有一个字符串 s = "Hello, world!",如果我们想要选取其中的子串 "Hello",可以这样操作:

    s[0:5]
    
    • 这里的 0 表示起始索引,5 表示结束索引,注意结束索引是不包含在选取的子串中的,即包左不包右。运行结果为 "Hello"

1.4.1 切片几种写法

  1. 字符串 [start : end]

    • 字符串的切片 就是使用 索引实现.
    • len()方法,计算字符串的长度.
    # 第一种写法
    s = "hello,world" #字符串索引下标从0开始.
    # s[start:end]
    a = s[0:5] # 相当于 [1:5) 包左不包右
    print(a) # 输出结果: ello
    #2. 字符串的长度 len()方法的使用.
    print(len(s)) #从1开始计算.
    
  2. 字符串 [start : end : step]

    • step 就是计算间隔.
    #2. 第二种写法 s[start:end:step] 其中step 是 计算间隔
    s = "hello,world"
    a = s[0:8:2] #从0开始到8结束(不包含8 ) [0:8),中间间隔为2
    #相当于 0 2 4 6.
    print(a)# hlow
    
    
  3. 可以将切片语法结构中部分省略.

    • s[ :end] 即: 从0开始
    • s[start: ] 即: 从start开始到索引长度结束 len(s)-1
    #3. 种写法可以省略
    # 切片,以某个索引结尾.
    print(f"输出的是什么{s[:5]}") #相当于 [0:5)  相当于从零开始.
    # 切片 ,从头开始...
    print(f"输出的是什么{s[3:]}")# 相当于 [3:end)  相当于从3开始 len(s)-1 结束.
    
  4. 将切片中语法结构都省略不写

    • s[ : : ] 省略了start end step 相当于全部输出.
    #第4种 省略语法结构 
    s = "hello,world"
    a = s[::] #相当于全部输出
    
    print(a) #hello,world
    
  5. 反转输出

    • s[: : -1] 倒着输出
    	#5. 反转写法
    	s = "hello,world"
    	print(f"反转格式 {s[::-1]}")  # dlrow,olleh ,相当于从后面开始取.
    
  6. 负数取值法

    • 最后一位就是 -1 ,相当于从后往前找
    #6. 负数取值法
    # 分析一波, s = "hello,world" 相当于从后往前寻找.  从-4开始: 从后面开始数d, 然后到-1结束
    # 相当于从后面数,  -1 就是最后一位,  -4 就是往前面数位数. [-4,-1)  也是一样的道理
    s = "hello,world"
    print(f"反转格式{s[-4:-1]}") #orl
    

1.5 字符串常用函数

1.5.1 find()

  1. find函数用于检测字符串中 是否包含子字符串.

    • 如果包含子字符串则返回开始的索引值, 如果没有查询到则返回 -1.
    #1.语法格式 
    str.find(sub_str,start,end)
    
    • sub_str :要查找的内容, 类型str (必选参数)
    • start : 从开始位置, 默认是 0 (可选参数)
    • end : 结束的位置, 查找到哪里结束 (可选参数)
  2. find( ) 方法的使用.

    #1.find 函数和 rfind函数的使用
    s = "12345678"
    a = s.find("456")
    print(a) # 如果包含则返回开始的索引值 3
    
    #第二种写法
    b = s.find("345",1,6)
    print(b) # 开始索引 2
    
    #如果没有查到则返回  -1 
    c = s.find("134")
    print(c)
    

1.5.2 index()

  1. index函数,检测字符串中 是否包含子字符串,

    • 如果有则返回开始索引,否则则抛出异常.
    #1. 语法格式 
    str.index(sub_str,start,end)
    
    • sub_str :要查找的内容, 类型str (必选参数)
    • start : 从开始位置, 默认是 0 (可选参数)
    • end : 结束的位置, 查找到哪里结束 (可选参数)
  2. index方法的使用

    • 其实同find方法一样.
    s = "12345678"
    a = s.index("234")
    print(a) # 返回从1开始
    
    #第2中写法
    b = s.index("234",0,7)
    print(b)
    
    # 如果没有找到的话,则报错
    c = s.index("789")
    print(c) # ValueError: substring not found
    

1.5.3 扩展知识: rfind()和rindex()

  1. 相当于从后往前找, 从后面第一次出现的.

    • 二者用法几乎一致.
    • 思考一下: find()函数用的多, 还是 index()用的多 ?
    s = "123456789876"
    print(s.rfind("8")) #9 从后面找第一个出现的
    print(s.find("8")) # 7 从前面找第一个出现的.
    
    print("-"*20) #做一个华丽的分割线
    
    print(s.rindex("8")) #9
    print(s.index("8"))  #7 
    

1.5.4 count()

  1. count() 函数是, 用于统计字符串中某个子字符串出现的次数。

    • 它的语法格式如下:
    # 其中  satrt ,end 属于可选参数.
    str.count(sub,start,end)
    
    • sub: 要查找的子字符串。
    • start:可选参数,查找的起始位置,默认为 0。
    • end:可选参数,查找的结束位置,默认为字符串的长度。
  2. count() 语法练习

    # 1.count函数的使用方法
    
    s = "hello and world and you"
    print(s.count("and"))  # 出现 2次
    
    #根据起始位置 和 结束位置进行统计.
    print(s.count("and", 7, 19))  # 出现1次
    print(s.count("and",6))  # 出现2次, 相当于从6开始到结束
    

1.5.5 replace()

  1. replace() 方法用来替换字符串中指定子字符串的函数。

  2. 替换之后对原始字符串没有影响,会重新生成一个新的字符串.

    • 它的语法格式如下:
    #1,语法格式如下 
    str.replace(old, new,count])
    
    • 其中,old 参数表示要被替换的子字符串,new 参数表示替换后的新字符串,count 参数表示最多替换的次数,如果省略该参数,则表示全部替换。
  3. 两种替换情况 根据可选参数 count 确定

    • 全部替换, count不使用
    • 部分替换 count 使用
    s = "hello and world and you"
    
    # #1. 相当于将 and 全部替换成了 or
    print(s.replace("and", "or"))
    #2. 部分替换 只替换1次
    print(s.replace("and","or",1))
    #3.输出查看原来的字符串是否发生改变
    print(s)
    

1.5.6 split()

  1. split() 方法, 用来将字符串按照某个分隔符进行分割

    • 并返回一个分割后的字符串列表。
  2. split() 方法有一个可选参数 sep 用来指定分割符,如果不传入任何参数,则默认按照空格分割

    • 分割后 得到的每一个字符串元素 可以通过索引访问。
str.split(sep) # 按照格式进行切割 
str.sprlit() #默认不写就是按照空格切分
  1. split() ,有两个可选参数
    • count 如果不写,默认全部切分,
    • sep ,按照什么格式进行切分
    • 也可以按照出现重复次数多的字符进行切分.(了解即可)
    # 1.split() 方法使用
    s = "123,456,789 101112 123 456"
    #1.1 我可以按照逗号切分,返回一个list容器
    print(s.split(","))
    #1.2 我可以按照空格切分,返回一个list容器
    print(s.split(" "))
    #1.3 不传递参数 ,按照默(空格)切分
    print(s.split())
    
    # 2. count可选参数 默认切割几次,
    print(s.split(",",1)) #对比发现,只对第一个逗号进行切割.
    #2.1 可以按照出现的字符进行切分,了解即可.
    print(s.split("123"))
    

1.5.7 join()

  1. join() 它可以将一个列表或元组中的多个字符串元素,按照 指定的分隔符 连接成一个 单独的字符串。

    • 可以理解为: 将分隔符与要切割的字符串组成一个新的字符串.
  2. join() 方法的语法格式如下:

    str.join(iterable) # 也可以放入 list 列表
    
    • 其中,str 是指定的分隔符iterable 可以是一个包含多个字符串元素的列表或元组。
  3. 练习如下:

    • str.join(列表), 也可以放列表. 然后根据分割符,进行遍历输出, 生成新的字符串.
    # 1.join使用方法介绍
    s = "hello"
    # 1.将原有的字符串进行了遍历.并添加了分隔符.
    new_s = "-".join(s)
    print(new_s)  # h-e-l-l-o
    
    #2.使用空格进行分割了.
    new_s1 = " ".join(s)
    print(new_s1) # h e l l o
    
    #3. 定义一个list列表.,可以切割list->str
    a = ["a","b","c","d"]
    print(a)
    
    #生成了字符串
    #print(type(" * ".join(a)))
    print(" * ".join(a)) # a * b * c * d
    

1.6 字符串Api 扩展知识

  1. capitalize()

    • 把字符串的第一个字符大写
    • mystr.capitalize()
    # mystr.capitalize()
    	
    s = "hello,world"
    print(s.capitalize()) #Hello,world
    
  2. title()

    • 把字符串的每个单词首字母大写
    • a.title()
    
     a = "hello world"
     print(a.title())	
     'Hello,World'
    
  3. startswith() 是则返回 True,否则返回 False.

    • 检查字符串是否是以 hello 开头
    • 也可以检测 是否以单词开头 h
    	# mystr.startswith(hello)
    	
    	s = "hello,world"
    	print(s.startswith("h"))
    	#也可以使用 单词开头 
    	print(s.startswith("hello"))
    
  4. endswith 判断字符串是否以指定后缀结尾.

    • 如果是返回True,否则返回 False.
    str_1 = "hello,world"
    #判断字符串以什么后缀结尾
    print(str_1.endswith("ld")) # True
    
  5. lower()upper()

    • 转换 mystr 中,大小写.
    #1.大写变小写
    str_2 ="HELLO,WORLD"
    print(str_2.lower())
    
    #2.小写变大写
    str_1 ="hello,world"
    print(str_1.upper())
    

1.7 练习: 字符串综合练习

  1. 判断单词 great是否在字符串words中,如果在,则将每一个great后面加一个s, 如果不在则输出 great不在该字符串中

  2. 将整个字符串的每一个单词都变成小写,并使每一个单词的首字母变成大写

  3. 去除首尾的空白,并输出处理过后的字符串

    words = " great craTes Create great craters, But great craters Create great craters "
    
    # 判断单词great是否在这个字符串中
    if 'great' in words:
    	# 将每一个great替换成greats
        words = words.replace("great", "greats")
    
        # 将单词变成小写
        words = words.lower()
    
        # 将每一个单词的首字母都大写
        words = words.title()
    
        # 去除首尾的空白
        words = words.strip()
    
        # 最后进行输出
        print(words)
    
    else:
        print("great不在该字符串中")
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/647897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++常用STL容器--list

C常用STL容器--list list基本概念list构造函数list赋值、交换list大小操作list插入、删除list数据获取list反转、排序 list基本概念 功能: 将数据进行链式存储 链表(list) 是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针…

高并发架构设计方法

我们知道,“高并发”是现在系统架构设计的核心关键词。一个架构师如果设计、开发的系统不支持高并发,那简直不好意思跟同行讨论。但事实上,在架构设计领域,高并发的历史非常短暂,这一架构特性是随着互联网,…

Linux之配置网络

目录 Linux之配置网络 网络接口 网络类型符号 类型 设备类型或位置选择 类型 网络连接 网络配置 三种方法 方法1 --- 使用nmtui进行网路配置 方法2 --- 使用nmcli设置 方法3 --- 修改配置文件 方法4 --- cockpit配置示意图 使用ip命令配置临时生效的网络连接 测试网…

chatgpt赋能python:Python收集数据的介绍

Python收集数据的介绍 Python是一个多功能的编程语言,其拥有强大的数据收集和分析功能。为了充分利用Python的数据处理和挖掘功能,一些优秀的数据收集工具被开发出来。在本文中,我们将介绍如何使用Python收集数据,并介绍一些常用…

总结900

目标规划: 月目标:6月(线性代数强化9讲,考研核心词过三遍) 周目标:线性代数强化3讲,英语背3篇文章并回诵,检测 每日规划 今日已做 1.读六级阅读 2.完成学习通考试(没做计划) 3.阅…

[编程工具]Unity配表导出工具TableExporter1.1

[ 目录 ] 0. 前言1. 属性拓展优化(1)反射获取转化函数 TryParse(2)反射获取EmptyReplace(3)属性类型(4)属性拓展 2. 模板处理(1)替换内容(2&#…

chatgpt赋能python:Python如何放大界面——实用技巧

Python如何放大界面——实用技巧 在Python中,很多时候我们需要放大界面来更清楚的展示内容。这篇文章将介绍Python放大界面的方法。 放大界面的原理 在Python中,放大界面的原理实际上就是改变窗口的大小。我们可以通过改变窗口的尺寸实现放大效果。 …

LuatOS-Air AT应用指南--RNDIS

简介 RNDIS是指Remote NDIS,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡。从而使Windows /Linux可以通过 USB 设备连接网络。 Window系统 window系统支持RNDIS直接用usb连接就可以使用&a…

2023/6/14总结

JS的学习: JavaScript是一种运行在客户端(浏览器)的编程语言,实现人机交互的效果 主要作用: 网页特效表单验证数据交互 JS的组成 ECMAScript 规定了js基础的语法核心知识 Web APIs DOM:操作文档,对页面…

简单的TCP网络程序·线程池(后端服务器)

目录 版本四:线程池 注意事项 文件:Task.hpp -- 任务单独为一个文件 组件:日志修改 新函数:vprintf() 可变参数的提取逻辑 vfprintf()的工作原理 初始化一个va_list 日志准备 获取时间小知识 日志初版 日志启动测试 …

DAY23:二叉树(十三)二叉树的最近公共祖先+二叉搜索树的最近公共祖先

文章目录 236.二叉树的最近公共祖先思路完整版后序遍历的进一步理解为什么左为空右不为空的时候return right这个逻辑是否包含p/q本身就是公共祖先的情况 235.二叉搜索树的最近公共祖先思路关于遍历顺序 递归法最开始的写法debug测试修改版 迭代法最开始的写法为什么最开始这种…

chatgpt赋能python:Python收费介绍

Python收费介绍 什么是Python? Python是一种高级的、解释性、面向对象、纯粹的动态语言,多用于快速应用程序开发、脚本编写、系统管理任务等。它有一个简单直观优美的语法,非常容易学习。 Python的收费形式 Python语言本身是免费的,任何…

chatgpt赋能python:Python如何操作Word文档

Python如何操作Word文档 简介 Python是一种高级编程语言,具有易于学习和使用、高效、可移植性强等优点。相信许多Python开发者都遇到过需要使用Python操作Word文档的情况。本文旨在介绍如何使用Python操作Word文档,使开发者能够方便地实现自己的需求。…

chatgpt赋能python:Python怎么改为中文?

Python怎么改为中文? Python是一种高级编程语言,具有易读性、简单性和可扩展性的特点。它广泛应用于Web开发、数据分析、人工智能等领域。如何将Python改为中文?下面将为您详细介绍。 为什么要将Python改为中文? Python的英文是由…

[读论文][谷歌-12s生成] Speed is all your need

论文简要总结 刚读了下speed is all you need这个论文, https://arxiv.org/pdf/2304.11267.pdf 只是用的SD1.4没有对网络进行改造。 只做了4个改动 1 是对norm采用了groupnorm (GPU shader加速) 2 采用了GELU (GPU shader加速) 3 采用了两种attention优化,是partiti…

C语言之指针详解(2)

目录 本章重点 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 9. 指针和数组面试题的解析 数组指针 数组指针的定义 数组指针是指针?还是数组? 答案是&…

数据结构-队列

数据结构之队列 队列的概念顺序队列循环队列 顺序循环队列的ADT定义1、简单结构体定义2、初始化3、队列的清空4、计算队列的长度5、判断队列是否为空6、插入新的元素7、元素的删除8、遍历输出队列内的所有元素 链队列的ADT定义1、链队列简单结构体定义2、初始化链队列3、判断链…

chatgpt赋能python:Python怎么断行-让代码更易读

Python怎么断行 - 让代码更易读 大多数Python程序员都知道,代码可读性非常重要。好的代码应该易于阅读和理解,而不是让人困惑和痛苦。 然而,我们经常会发现一些Python代码在一行中拥挤着多个表达式、长变量名混杂其中,让人感到相…

数组:为什么数组都从0开始编号?

提到数组,我想你肯定不陌生,甚至还会自信地说,它很简单啊。 是的,在每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。尽管…

word中使用通配符批量将参考文献设置为上角标

目录 一、word中的通配符匹配规则 二、匹配单个参考文献 三、匹配多个参考文献 四、操作方式 (1)打开word中的替换功能 (2)输入要查找的内容 (3)选择替换格式 (4)点击替换 一…