Python 中的字符串分割函数 split() 详解

070697e65dbae97a6877877e1f9bb03e.jpeg

更多Python学习内容:ipengtao.com

在 Python 编程中,处理字符串是一项常见的任务。字符串分割是其中的一个常见操作,而 Python 提供了强大的 split() 函数,用于将字符串拆分成多个部分。本文将详细介绍 split() 函数的用法、参数和示例代码,以帮助大家充分利用这个功能。

基本用法

split() 函数是 Python 字符串的内置方法,用于将一个字符串按照指定的分隔符拆分成多个子字符串,并将这些子字符串存储在列表中。

函数的基本语法如下:

str.split([separator[, maxsplit]])
  • separator(可选参数):指定用于分隔字符串的分隔符,默认为所有空白字符(包括空格、制表符、换行符等)。可以是字符串或字符。

  • maxsplit(可选参数):指定最大分割次数。如果提供了此参数,函数将执行最多 maxsplit 次分割。

下面是一个简单的示例,演示如何使用 split() 函数将字符串分割成列表:

# 基本用法示例
text = "Hello,World,Python"
words = text.split(",")  # 使用逗号作为分隔符
print(words)  # 输出:['Hello', 'World', 'Python']

在上述示例中,使用逗号 , 作为分隔符将字符串 text 分割成了一个包含多个单词的列表 words

使用默认分隔符

默认情况下,split() 函数会使用所有空白字符作为分隔符,包括空格、制表符、换行符等。

以下是一个示例:

# 使用默认分隔符分割字符串
text = "Hello   World\tPython"
words = text.split()  # 不提供分隔符,默认使用空白字符分割
print(words)  # 输出:['Hello', 'World', 'Python']

在上述示例中,字符串中的多个连续空白字符被视为一个分隔符。

使用 maxsplit 参数

可以使用 maxsplit 参数来限制分割的次数。这对于只想分割字符串的前几部分很有用。

以下是一个示例:

# 使用 maxsplit 参数限制分割次数
text = "apple,banana,grape,orange"
fruits = text.split(",", 2)  # 最多分割两次
print(fruits)  # 输出:['apple', 'banana', 'grape,orange']

在上述示例中,使用 maxsplit=2,将字符串 text 最多分割为两部分,结果列表中有三个元素。

使用自定义分隔符

除了使用逗号 , 作为分隔符,split() 函数还可以使用任何其他字符或字符串作为分隔符。

以下是一个示例,使用分号 ; 分割字符串:

# 使用分号作为分隔符
text = "apple;banana;grape;orange"
fruits = text.split(";")  # 使用分号作为分隔符
print(fruits)  # 输出:['apple', 'banana', 'grape', 'orange']

分割换行符

处理文本文件时,常常需要根据换行符来分割文本的不同行。split() 函数可以轻松应对这种情况。

以下是一个示例:

# 使用换行符分割文本
text = "Line 1\nLine 2\nLine 3"
lines = text.split("\n")  # 使用换行符分割
print(lines)  # 输出:['Line 1', 'Line 2', 'Line 3']

处理连续分隔符

有时,字符串中可能包含连续的分隔符。默认情况下,split() 函数会将连续的分隔符视为一个分隔符并忽略中间的空字符串。

以下是一个示例:

# 处理连续分隔符
text = "apple,,banana,,grape,,orange"
fruits = text.split(",")  # 使用逗号作为分隔符
print(fruits)  # 输出:['apple', '', 'banana', '', 'grape', '', 'orange']

在上述示例中,由于字符串中存在连续的逗号 ,,split() 函数将其视为一个分隔符,并在结果列表中包含了空字符串 ''

分割指定次数

如果只希望分割字符串的前几部分,可以使用 maxsplit 参数来限制分割次数。

以下是一个示例:

# 分割指定次数
text = "apple,banana,grape,orange"
fruits = text.split(",", 2)  # 最多分割两次
print(fruits)  # 输出:['apple', 'banana', 'grape,orange']

在上述示例中,使用 maxsplit=2,将字符串 text 最多分割为两部分,结果列表中有三个元素。

注意事项

在使用 split() 函数时,需要注意以下几个方面:

  1. 分隔符可以是任何字符串,包括多个字符的字符串。

  2. 如果不提供分隔符,则默认使用所有空白字符,包括空格、制表符、换行符等。

  3. 默认情况下,连续的分隔符会被视为一个分隔符,并且中间的空字符串会包含在结果列表中。

  4. 使用 maxsplit 参数可以限制分割的次数,但不能指定从字符串的末尾开始分割。

示例应用场景

当处理字符串时,有许多情况下需要使用字符串分割函数 split() 来解析和提取数据。

1.CSV 文件解析

CSV 文件通常由逗号分隔的值组成,使用 split() 函数可以轻松解析 CSV 行并提取数据。

csv_line = "John,Doe,30,New York"
csv_data = csv_line.split(",")
first_name, last_name, age, city = csv_data
print(f"First Name: {first_name}, Last Name: {last_name}, Age: {age}, City: {city}")

2.URL 解析

从 URL 中提取域名、路径、查询参数等信息。

url = "https://www.example.com/page?param1=value1&param2=value2"
parts = url.split("://")[1].split("/")
domain = parts[0]
path = "/".join(parts[1:])
print(f"Domain: {domain}, Path: {path}")

3. 配置文件解析

解析配置文件中的键值对。

config_str = "username=admin\npassword=secret\ndatabase=appdb"
config_data = {}
for line in config_str.split("\n"):key, value = line.split("=")config_data[key] = value
print(config_data)

4.日志文件处理

从日志文件中提取日期、时间、日志级别等信息。

log_entry = "2022-01-15 10:30:15 [INFO] This is an informational message."
log_parts = log_entry.split(" ")
log_date = log_parts[0]
log_time = log_parts[1]
log_level = log_parts[2]
log_message = " ".join(log_parts[3:])
print(f"Date: {log_date}, Time: {log_time}, Level: {log_level}, Message: {log_message}")

5.数据清洗和处理

在数据处理中,分割字符串是一种常见的方式,特别是在清洗和准备数据时。

data = "10,20,30,40,50"
values = [int(x) for x in data.split(",")]
average = sum(values) / len(values)
print(f"Average: {average}")

6.文件路径解析

从文件路径中提取目录和文件名。

file_path = "/path/to/some/file.txt"
parts = file_path.split("/")
directory = "/".join(parts[:-1])
file_name = parts[-1]
print(f"Directory: {directory}, File Name: {file_name}")

总结

Python 中的 split() 函数是一个强大且灵活的工具,用于将字符串按照指定的分隔符拆分成多个子字符串。无论是简单的文本处理还是复杂的数据解析,split() 函数都能提供便捷的解决方案。通过熟练掌握 split() 函数的用法,可以更轻松地处理各种字符串操作任务。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

  100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

634290f1a5067865a5fcdd9fb5f997f9.png

点击“阅读原文”,获取更多学习内容

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

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

相关文章

Linux 转换文字编码与换行符 nkf命令

参考资料 【 nkf 】コマンド――文字コードと改行コードを変換するnkfコマンドでファイルの文字コードと改行コードを統一する 目录 一. 前期准备二. 乱码现象与分析三. nkf命令3.1 nkf --guess 查看文件编码3.2 nkf -w8 UTF-8(BOM)编码显示3.3 nkf -wd --overwrite 覆盖源文件…

MySQL核心SQL

一.结构化查询语言 SQL是结构化查询语言(Structure Query Language),它是关系型数据库的通用语言。 SQL 主要可以划分为以下 3 个类别: DDL(Data Definition Languages)语句 数据定义语言,这…

C#无标题栏窗体拖动代码

文章目录 一、概念二、案例三、常见问题四、链接 一、概念 C#(C Sharp)是由微软公司开发的一种面向对象的编程语言。它是从C和C语言演化而来的,并结合了Java和其他编程语言的特性。C#是微软.NET平台的一部分,允许开发人员创建各种…

EMC VNXe / Unity存储系统如何找回密码

开始之前,先简单说说,EMC的VNXe存储之间的关系。 EMC的VNXe和Unity存储的操作系统OS是一样的,当然不是完全一样,但是架构是一样的,先推出的产品是VNXe,然后在这个基础上演进到了Unity,Unity XT…

港大谷歌提出GO-NeRF:在NeRF中生成协调且高质量的3D对象

尽管在3D生成方面取得了进展,但在作为NeRF表示的现有3D场景中直接创建3D对象仍然是未经探索的。这个过程不仅需要高质量的3D对象生成,还需要将生成的3D内容无缝地合成到现有的NeRF中。为此,作者提出了一种新方法,GO-NeRF&#xff…

电脑定时关机应用

这是一个Python应用。家里卧室装了新电视,HDMI连接笔记本追剧还是很愉快的。可是经常睡着,自然忘了关机。搜了一大圈,都是用命令行或者bat解决。商店里的应用也不好用,有些还收费。于是萌生了自己写一个定时关机应用的想法。利用N…

监控平台zabbix介绍与部署

1. 完整的项目 业务架构:客户端 -> 防火墙 -> 负载均衡(四层、七层)-> Web缓存/应用 -> 业务逻辑(动态应用)-> 数据缓存 -> 数据持久 运维架构:运维客户端 -> 堡垒机/跳板机&#x…

TLC Nand Flash 存储单元的读取原理

我们知道Nand Flash使用浮栅晶体管作为存储单元(memory cell)来存储数据,浮栅晶体管物理结构如图1所示: 图1 浮栅晶体管 对于普通的晶体管(去掉浮栅晶体管中的浮栅层,floating gate)&#xff0…

基于Docker的Nginx的安装与配置

基于Docker的Nginx的安装与配置 1 为Nginx创建一个容器1.1 学习docker run1.2 通过docker run为Nginx创建并启动一个容器 2 配置Nginx2.1 学习docker的bind mount技术2.2 在Nginx容器中找到想修改的文件所在的目录2.2.1 认识nginx.conf文件2.2.2 访问Nginx服务,默认…

【MATLAB】VMD_LSTM神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 变分模态分解(Variational Mode Decomposition,VMD)和LSTM(Long Short-Term Memory)神经网络结合的算法是一种用于处理时间序列…

超详细的嵌入式cJSON使用注意事项,持续补充中......

文章目录 一、堆内存不足1.1 问题描述1.2 解决办法 二、内存泄露2.1 忘记Delete2.2 忘记Free2.3 串口数据接收缺少部分字符导致的内存泄露(自己的问题)问题分析 2.4 内存泄露在Cortex-M3内核会发生什么? cJSON开源库地址: cJSON 一、堆内存不足 1.1 问…

ssm基于Web的课堂管理系统设计与实现论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

【GitHub项目推荐--开源的坦克大战】【转载】

坦克大战当年红遍大江南北,很多和我一样的九零后应该都有着对这个游戏的记忆。现在显示器分辨率越来越高,使用矢量图来实现像素风格游戏,可以获得非常高的展现质量。 这个项目是作者肥超花了很长时间折腾的复刻版本,所有元素都使…

余弦相似度的计算以及公式

公式: 思想:余弦相似度的思想是通过计算两个向量之间的余弦值来衡量它们的相似程度。如果两个向量之间的夹角越小,它们的余弦值就越接近1,也就意味着它们越相似。而如果它们的夹角越大,余弦值就越接近0,也就…

ES的文档操作

一,DSL语句 1,新增文档: 2,查询文档和删除文档: ,3修改文档 修改有两种方式: 全量修改:直接覆盖原来的文档 增量修改:修改文档中的部分字段 全量修改 全量修改是覆盖原来的文档…

八:分布式锁

1、为什么要使用分布式锁 锁是多线程代码中的概念,只有多任务访问同一个互斥的共享资源时才需要锁。单机应用开发时一般使用synchronized或lock。多线程的运行都是在同一个JVM之下。应用是分布式集群,属于多JVM的工作环境,JVM之间已经无法通过…

Error: L6218E: Undefined symbol 系列错误汇总 (referred from main.o)

传送门 错误1: Undefined symbol(referred from main.o)错误2:Undefined_symbol _use_two_region memory 错误1: Undefined symbol(referred from main.o) Cube_GPIO\Cube_GPIO.axf: Error: L6218E: Undefined symbol LED_GPIO_Init (referr…

操作系统详解(5.1)——信号(Signal)的相关题目

系列文章: 操作系统详解(1)——操作系统的作用 操作系统详解(2)——异常处理(Exception) 操作系统详解(3)——进程、并发和并行 操作系统详解(4)——进程控制(fork, waitpid, sleep, execve) 操作系统详解(5)——信号(Signal) 文章目录 题目第一问第二问第三问 题目…

FGSM方法生成交通信号牌的对抗图像样本

背景: 生成对抗样本,即扰动图像,让原本是“停车”的信号牌识别为“禁止驶入” 实验准备 模型:找一个训练好的,识别交通信号牌的CNN模型,灰度图像 模型地址:GitHub - Daulettulegenov/TSR_CNN:…

Wargames与bash知识17

Wargames与bash知识17 Bandit25(Bandit26) 关卡提示 从bandit25登录到bandit26应该相当容易…用户bandit26的shell不是/bin/bash,而是其他东西。找出它是什么,它是如何工作的,以及如何摆脱它。 推荐命令 ssh, cat, …