【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理

举报
愚公搬代码 发表于 2025/04/30 23:53:35 2025/04/30
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。
博客内容 .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎 👍点赞、✍评论、⭐收藏

🚀前言

在网络爬虫的世界中,数据的获取只是第一步,更为关键的是如何对获取的数据进行有效的处理与分析。而字符串处理作为数据处理的基础,扮演着至关重要的角色。无论是对爬取的网页内容进行清洗、提取特定信息,还是进行格式转换,掌握字符串处理的技巧都能让你的爬虫项目更加高效和精准。

我们将深入探讨字符串处理的各种方法与技巧。我们将介绍常用的字符串操作,包括查找、替换、切割和连接等,同时结合实际案例,帮助你理解如何在爬虫中应用这些技巧,提升数据的可用性与有效性。

🚀一、字符串处理

🔎1.替换字符串

方法:re.sub()re.subn()

🦋1.1 语法

re.sub(pattern, repl, string, count=0, flags=0)
re.subn(pattern, repl, string, count=0, flags=0)

参数说明:

  • pattern:正则表达式模式字符串。
  • repl:替换后的字符串。
  • string:原始字符串。
  • count:最大替换次数(默认0,替换所有匹配)。
  • flags:修饰符(如 re.I 忽略大小写)。

功能说明

  • sub():替换所有匹配项,返回修改后的字符串。
  • subn():返回元组 (替换后的字符串, 替换次数)

🦋1.2 示例代码

例1:隐藏手机号

import re
pattern = r'1[34578]\d{9}'  # 匹配手机号的正则表达式
string = '中奖号码为:84978981 联系电话为:13611111111'
result = re.sub(pattern, '1XXXXXXXXXX', string)
print(result)

输出:

中奖号码为:84978981 联系电话为:1XXXXXXXXXX

例2:删除所有字母

import re
string = 'hk400 jhkj6h7k5 jhkjhk1j0k66'
pattern = '[a-z]'  # 匹配所有小写字母
result = re.sub(pattern, '', string, flags=re.I)  # re.I 忽略大小写
print(result)

输出:

400 675 1066

例3:替换并统计次数(subn()

import re
string = 'John,I like you to meet Mr. Wang,Mr. Wang, this is our Sales Manager John. John, this is Mr. Wang.'
pattern = 'Wang'
match = re.subn(pattern, 'Li', string)
print("替换结果:", match[0])
print("替换次数:", match[1])

输出:

替换结果: ('John,I like you to meet Mr. Li,Mr. Li, this is our Sales Manager John. John, this is Mr. Li.', 3)
替换次数: 3

🔎2.分割字符串

方法:re.split()

🦋2.1 语法

re.split(pattern, string, maxsplit=0, flags=0)

参数说明:

  • pattern:正则表达式模式字符串。
  • string:原始字符串。
  • maxsplit:最大分割次数(默认0,全部分割)。
  • flags:修饰符(如 re.I)。

🦋2.2 示例代码

例1:从URL提取参数

import re
pattern = r'[?|&]'  # 匹配 ? 或 & 作为分隔符
url = 'http://www.example.com/login.jsp?username="mr"&pwd="mrsoft"'
result = re.split(pattern, url)
print(result)

输出:

['http://www.example.com/login.jsp', 'username="mr"', 'pwd="mrsoft"']

例2:限制最大分割次数

import re
string = '预定|K7577|CCT|THL|CCT|LYL|14:47|16:51|02:04|Y'
pattern = '\|'  # 匹配竖线作为分隔符
result = re.split(pattern, string, maxsplit=1)  # 仅分割一次
print(result)

输出:

['预定', 'K7577|CCT|THL|CCT|LYL|14:47|16:51|02:04|Y']

🔎3.关键总结

  1. sub() 用于替换字符串,支持正则表达式匹配。
  2. subn() 额外返回替换次数,适合需要统计的场景。
  3. split() 根据正则分割字符串,maxsplit 控制分割次数。
  4. 修饰符 flags 可调整匹配规则(如 re.I 忽略大小写)。

通过灵活组合正则表达式和参数,可高效处理复杂字符串操作。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。