python爬虫基础----字符串高级

哈喽小伙伴们,大家好!今天我们学习的内容是字符串的高级操作

一、字符串高级

字符串的常见操作包括:

获取长度:lenlen函数可以获取字符串的长度。
len函数可以获取字符串的长度。查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次
出现的开始位置索引值,如果不存在,则返回-1.
判断:startswith,endswith判断字符串是不是以谁谁谁开头/结尾
计算出现次数:count返回 str在start和end之间 在 mystr里面出现的次数
替换内容:replace替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
切割字符串:split通过参数的内容切割字符串
修改大小写:upper,lower将字符串中的大小写互换
空格处理:strip去空格
字符串拼接:join字符串拼接

代码演示:

1.获取长度: 使用**len**函数可以获取字符串的长度。

s = "hello"
length = len(s)
print(length)  # 输出 5

2.查找内容: 使用**find**方法可以查找指定内容在字符串中第一次出现的位置索引值。

s = "hello"
index = s.find("e")
print(index)  # 输出 1

3.循环遍历字符串: 可以使用**for**循环遍历字符串中的每个字符。

for char in "hello":print(char)

4.判断开头和结尾: 使用**startswithendswith**方法判断字符串是否以指定内容开头或结尾。

s = "hello"
print(s.startswith("h"))  # 输出 True
print(s.endswith("o"))    # 输出 True

5.计算出现次数: 使用**count**方法返回指定内容在字符串中出现的次数。

s = "hello,hello,world"
count = s.count("hello")
print(count)  # 输出 2

6.替换内容: 使用**replace**方法替换字符串中的指定内容。

s = "hello,world"
new_s = s.replace("world", "python")
print(new_s)  # 输出 hello,python

7.切割字符串: 使用**split**方法通过指定内容切割字符串,并返回切割后的子串列表。

s = "hello,world"
parts = s.split(",")
print(parts)  # 输出 ['hello', 'world']

8.修改大小写: 使用**upperlower**方法将字符串中的字母转换为大写或小写。

s = "Hello,World"
lowercase = s.lower()
uppercase = s.upper()
print(lowercase)  # 输出 hello,world
print(uppercase)  # 输出 HELLO,WORLD

9.空格处理: 使用**strip**方法去除字符串两端的空格。

s = "  hello,world  "
stripped = s.strip()
print(stripped)  # 输出 hello,world

10.字符串拼接: 使用**join**方法将多个字符串拼接成一个字符串。

parts = ["hello", "world"]
s = ",".join(parts)
print(s)  # 输出 hello,world

二、正则表达式

在Python中,正则表达式是处理字符串的强大工具,可以用来搜索、匹配、替换字符串。下面是一些常见的正则表达式操作:

  1. re模块的使用:Python中使用re模块来操作正则表达式,可以进行搜索、匹配和替换等操作。
import re# 使用re.match()方法匹配字符串
pattern = r"hello"
string = "hello world"
match = re.match(pattern, string)
if match:print("Match found: ", match.group())
else:print("No match")# 使用re.search()方法搜索字符串
search = re.search(pattern, string)
if search:print("Search found: ", search.group())
else:print("No search")# 使用re.findall()方法查找所有匹配的字符串
find_all = re.findall(pattern, string)
print("Find all: ", find_all)# 使用re.sub()方法替换字符串中的匹配项
replace = re.sub(pattern, "hi", string)
print("Replace: ", replace)
  1. 常用的匹配符号
    • .:匹配任意字符
    • ^:匹配字符串的开头
    • $:匹配字符串的结尾
    • ``:匹配前面的字符零次或多次
    • +:匹配前面的字符一次或多次
    • ?:匹配前面的字符零次或一次
    • {}:匹配前面的字符指定次数
    • []:匹配字符集合中的任意一个字符
    • |:或操作,匹配多个表达式中的一个
  2. 示例
import re# 匹配所有以a开头的单词
pattern = r"\\ba\\w+"
string = "apple banana orange"
matches = re.findall(pattern, string)
print(matches)# 替换所有数字为"x"
pattern = r"\\d+"
string = "12 apples and 35 bananas"
replace = re.sub(pattern, "x", string)
print(replace)# 检查字符串是否以数字开头
pattern = r"^\\d+"
string = "123abc"
if re.match(pattern, string):print("String starts with a number")
else:print("String does not start with a number")

(1)正则表达式**pattern = r"\\ba\\w+"**的含义是匹配以字母"a"开头,后面跟着任意数量的字母或数字的单词。让我们详细解释一下它的构成部分:

  • \\b:表示单词的边界,确保匹配的是单词的开头。
  • a:匹配字母"a"。
  • \\w+:匹配一个或多个字母、数字或下划线。

(2)这个正则表达式**pattern = r"\\d+"**的含义是匹配一个或多个数字。让我们详细解释一下它的构成部分:

  • \\d:匹配任意一个数字字符,相当于**[0-9]**。
  • +:匹配前面的字符(这里是**\\d**)一次或多次。

因此,这个正则表达式可以匹配任意长度的数字串,比如"123"、"4567"等。

(3)

这个正则表达式**pattern = r"^\\d+"**的含义是匹配以一个或多个数字开头的字符串。让我们详细解释一下它的构成部分:

  • ^:表示匹配字符串的开头。
  • \\d:匹配任意一个数字字符,相当于**[0-9]**。
  • +:匹配前面的字符(这里是**\\d**)一次或多次。

因此,这个正则表达式可以用来检查字符串是否以数字开头,如果是的话,就匹配这些数字。例如,对于字符串"123abc",这个正则表达式会匹配到"123"。

正则表达式在字符串操作中非常强大,但也需要谨慎使用,因为复杂的正则表达式可能会导致性能问题或难以维护的代码。

以上就是一些常用的字符串操作和高级技巧,希望对你有所帮助!

好啦,今天的学习就到这里了,明天我们将要学习列表的高级操作(增删改查)。那小伙伴们,我们明天再见啦!

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

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

相关文章

Pillow教程06:将图片中出现的黄色和红色,改成绿色

---------------Pillow教程集合--------------- Python项目18:使用Pillow模块,随机生成4位数的图片验证码 Python教程93:初识Pillow模块(创建Image对象查看属性图片的保存与缩放) Pillow教程02:图片的裁…

RuoYi-Vue-Plus(登录流程)

一、前端登录请求 登录按钮: src\views\login.vue 页面中登录片段,调用了handleLogin 方法,如下: @click.native.prevent="handleLogin" <el-button:loading="loading"size="medium"type="primary"style="width:100%;&qu…

浅析扩散模型与图像生成【应用篇】(十三)——GLIDE

13. GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models 该文提出一种基于文本引导的扩散模型用于图像的生成和编辑&#xff0c;可以根据给定的文字描述来生成或编辑图像。在ADM中我们曾介绍了一种基于分类器引导的图像生成模型&a…

鸿蒙HarmonyOS应用开发之使用Node-API实现跨语言交互开发流程

使用Node-API实现跨语言交互&#xff0c;首先需要按照Node-API的机制实现模块的注册和加载等相关动作。 ArkTS/JS侧&#xff1a;实现C方法的调用。代码比较简单&#xff0c;import一个对应的so库后&#xff0c;即可调用C方法。 Native侧&#xff1a;.cpp文件&#xff0c;实现模…

gin基础学习笔记--Log

1. 日志文件 package mainimport ("io""os""github.com/gin-gonic/gin" )func main() {gin.DisableConsoleColor()// logging to a filef, _ : os.Create("gin.log")gin.DefaultWriter io.MultiWriter(f)// 如果需要同时将日志写入文…

Android数据存储:SQLite、Room

在Android平台上&#xff0c;集成了一个嵌入式关系型数据库—SQLite&#xff0c;SQLite3支持 NULL、INTEGER、REAL&#xff08;浮点数字&#xff09;、TEXT(字符串文本)和BLOB(二进制对象)数据类型&#xff0c;虽然它支持的类型只有五种&#xff0c;但实际上sqlite3也接受varch…

C 指针数组

C 指针数组是一个数组&#xff0c;其中的每个元素都是指向某种数据类型的指针。 指针数组存储了一组指针&#xff0c;每个指针可以指向不同的数据对象。 指针数组通常用于处理多个数据对象&#xff0c;例如字符串数组或其他复杂数据结构的数组。 让我们来看一个实例&#xf…

【快捷部署】008_Docker(25.0.5)

&#x1f4e3;【快捷部署系列】008期信息 编号选型版本操作系统部署形式部署模式复检时间008Docker25.0.5Ubuntu 20.04apt-2024-03-27 一、快捷部署 #!/bin/bash ################################################################################# # 作者&#xff1a;cxyt…

大话设计模式之模板方法模式

模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一个算法的框架&#xff0c;将特定步骤的实现延迟到子类中。模板方法模式通过在父类中定义算法的骨架&#xff0c;而将具体步骤的实现留给子类来完成&#xff0c;从而使子类…

机器人是怎么计时的(通用定时器 - 时基单元)

目录 一&#xff0c;引言 二&#xff0c;机器人的“大脑” 三&#xff0c;时基单元介绍 1&#xff0c;定时器框图 2&#xff0c;时基单元 &#xff08;1&#xff09;预分频器 &#xff08;2&#xff09;CNT计数器 &#xff08;3&#xff09;自动重装载寄存器 四&#…

图论—树的直径(树形DP、BFS)

树的直径——树形 D P 、两次 B F S \Huge{树的直径——树形DP、两次BFS} 树的直径——树形DP、两次BFS 文章目录 树形DP两次BFS 不再详细解释代码&#xff0c;只记录完整模板。 树形DP 可以计算负权边。 时间复杂度&#xff1a; O ( n ) O(n) O(n)。 设 D [ x ] D[x] D[x]表…

如何在jupyter使用新建的虚拟环境以及改变jupyter启动文件路径。

对于刚刚使用jupyter的新手来说&#xff0c;经常不知道如何在其中使用新建的虚拟环境内核&#xff0c;同时&#xff0c;对于默认安装的jupyter&#xff0c;使用jupyter notebook命令启动 jupyter 以后往往默认是C盘的启动路径&#xff0c;如下图所示&#xff0c;这篇教程将告诉…

Django使用pyJwt进行token校验

1.登录成功后返回token&#xff0c;这里使用authenticate进行校验是否存在该用户 def login(request):try:data json.loads(request.body)username data.get(username)password data.get(password)if not all([username, password]):return to_response(status400, msg参数…

深入在线文档系统的 MarkDown/Word/PDF 导出能力设计

深入在线文档系统的 MarkDown/Word/PDF 导出能力设计 当我们实现在线文档的系统时&#xff0c;通常需要考虑到文档的导出能力&#xff0c;特别是对于私有化部署的复杂ToB产品来说&#xff0c;文档的私有化版本交付能力就显得非常重要&#xff0c;此外成熟的在线文档系统还有很…

中伟视界:智能识别!电动车戴头盔系统,保障您的安全出行

电动车AI头盔识别系统是一种利用人工智能技术提高道路安全的创新应用。该系统的核心目的是确保电动车驾驶者遵守交通安全规则&#xff0c;特别是佩戴头盔这一基本安全措施。通过自动识别驾驶者是否佩戴头盔&#xff0c;这一系统能够鼓励更为安全的骑行行为&#xff0c;减少交通…

Android客户端自动化UI自动化airtest从0到1搭建macos+demo演示

iOS客户端自动化UI自动化airtest从0到1搭建macosdemo演示-CSDN博客 一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 &#xff5c; macOS &#xff5c; jdk1.8 &#xff5c; 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads …

【LeetCode热题100】105. 从前序与中序遍历序列构造二叉树(二叉树)

一.题目要求 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 二.题目难度 中等 三.输入样例 示例 1: 输入: preorder [3,9,20,15,7], inorder…

【前端】layui学习笔记

参考视频&#xff1a;LayUI 1.介绍 官网&#xff1a;http://layui.apixx.net/index.html 国人16年开发的框架,拿来即用,门槛低 … 2. LayUi的安装及使用 Layui 是一套开源的 Web UI 组件库&#xff0c;采用自身轻量级模块化规范&#xff0c;遵循原生态的 HTML/CSS/JavaScript…

Docker Compose环境的安装通过docker compose完成python程序的运行

目录 Docker Compose环境的安装 通过docker compose完成python程序的运行 Docker Compose环境的安装 ##### 方法一&#xff1a;直接下载编译好的二进制文件 注意&#xff1a;只有linux平台上在安装docker时没有安装docker-compose&#xff0c;windows、macos安装docker时自…

C# wpf 嵌入wpf控件

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件&#xff08;本章&#xff09; 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现&#xff1f;1、继承HwndHost2、添加Content属性3、创建wpf窗口并设置Content4、关闭wpf窗口 二、完整…