举例详解Python中的split()函数的使用方法

本文详细介绍了Python中split()函数的使用方法,包括其语法、参数说明及多个实用示例,帮助读者掌握如何利用该函数进行字符串处理。

举例详解Python中的split()函数的使用方法

投稿:goldensun 字体:[增加 减小] 类型:转载 时间:2015-04-07 我要评论

这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下

函数:split()

Python中有split()和os.path.split()两个函数,具体作用如下:
split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
os.path.split():按照路径将文件名和路径分割开

一、函数说明
1、split()函数
语法:str.split(str=”“,num=string.count(str))[n]

参数说明:
str:   表示为分隔符,默认为空格,但是不能为空(”)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]:   表示选取第n个分片

注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略

2、os.path.split()函数
语法:os.path.split(‘PATH’)

参数说明:

  1. PATH指一个文件的全路径作为参数:
  2. 如果给出的是一个目录和文件名,则输出路径和文件名
  3. 如果给出的是一个目录名,则输出路径和为空文件名


二、实例
1、常用实例
 

>>> u = “www.doiido.com.cn”





#使用默认分隔符 >>> print u.split() [‘www.doiido.com.cn’] #以”.”为分隔符 >>> print u.split(‘.’) [‘www’, ‘doiido’, ‘com’, ‘cn’] #分割0次 >>> print u.split(‘.’,0) [‘www.doiido.com.cn’] #分割一次 >>> print u.split(‘.’,1) [‘www’, ‘doiido.com.cn’] #分割两次 >>> print u.split(‘.’,2) [‘www’, ‘doiido’, ‘com.cn’] #分割两次,并取序列为1的项 >>> print u.split(‘.’,2)[1] doiido #分割最多次(实际与不加num参数相同) >>> print u.split(‘.’,-1) [‘www’, ‘doiido’, ‘com’, ‘cn’] #分割两次,并把分割后的三个部分保存到三个文件 >>> u1,u2,u3 = u.split(‘.’,2) >>> print u1 www >>> print u2 doiido >>> print u3 com.cn


2、去掉换行符
 

>>> c = '''say
hello
baby'''

>>> print c
say
hello
baby

>>> print c.split('\n')
['say', 'hello', 'baby']

3、分离文件名和路径
 

>>> import os
>>> print os.path.split('/dodo/soft/python/')
('/dodo/soft/python', '')
>>> print os.path.split('/dodo/soft/python')
('/dodo/soft', 'python')

4、一个超级好的例子
 

>>> str="hello boy<[www.doiido.com]>byebye"

>>> print str.split("[")[1].split("]")[0]
www.doiido.com

>>> print str.split("[")[1].split("]")[0].split(".")
['www', 'doiido', 'com']

Tags: Python

相关文章

<think> 我们首先需要讲解Python中的mapreduce函数,包括它们的使用方法、应用场景,并给出代码示例。然后按照要求提出相关问题。 ### 1. map函数 **功能**:`map()` 函数将一个函数应用于一个可迭代对象(如列表、元组等)的所有元素,并返回一个迭代器(在Python 3中),其中包含所有经过该函数处理后的结果。 **语法**: ```python map(function, iterable, ...) ``` - `function`:函数,可以是内置函数、lambda函数或自定义函数。 - `iterable`:一个或多个可迭代对象。 **特点**: - 惰性求值:在Python 3中返回迭代器,需要转换为列表等才能获取所有值。 - 支持多个可迭代对象:当有多个可迭代对象时,函数应接受相应数量的参数,并行地从每个可迭代对象中取出元素作为函数的参数。 #### 示例代码: ```python # 示例1:将列表中的每个元素平方 numbers = [1, 2, 3, 4] squared = map(lambda x: x**2, numbers) print(list(squared)) # 输出: [1, 4, 9, 16] # 示例2:将两个列表对应位置相加 list1 = [1, 2, 3] list2 = [4, 5, 6] result = map(lambda x, y: x + y, list1, list2) print(list(result)) # 输出: [5, 7, 9] # 示例3:使用内置函数 str_nums = ['1', '2', '3'] int_nums = map(int, str_nums) print(list(int_nums)) # 输出: [1, 2, 3] ``` ### 2. reduce函数 **功能**:`reduce()` 函数位于`functools`模块中,它会对序列中的元素进行累积操作,即将一个二元函数作用于序列的元素,从左到右,将结果累积为单个值。 **语法**: ```python from functools import reduce reduce(function, sequence[, initial]) ``` - `function`:一个有两个参数的函数,该函数会先作用于序列的前两个元素,然后将结果与下一个元素作用,依此类推。 - `sequence`:可迭代对象。 - `initial`(可选):初始值,如果提供,则首先将初始值与序列的第一个元素作为参数传递给函数。 #### 示例代码: ```python from functools import reduce # 示例1:计算列表元素的乘积 numbers = [1, 2, 3, 4] product = reduce(lambda x, y: x * y, numbers) print(product) # 输出: 24 # 示例2:计算列表元素之(带初始值) total = reduce(lambda x, y: x + y, numbers, 10) # 从10开始累加 print(total) # 输出: 20 (10+1+2+3+4) # 示例3:将字符串列表拼接成一个字符串 words = ['Hello', 'World', '!'] sentence = reduce(lambda s1, s2: s1 + ' ' + s2, words) print(sentence) # 输出: 'Hello World !' ``` ### 应用场景对比: | 函数 | 典型应用场景 | 优点 | 缺点 | |--------|------------------------------------------|--------------------------|--------------------------| | `map` | 数据转换(类型转换、数值计算等) | 简洁,并行处理多个可迭代 | 结果需转换为列表获取 | | `reduce`| 累积计算(求、求积、拼接等) | 可实现复杂累积逻辑 | 需要导入,可读性可能降低 | ### 结合使用mapreduce的例子(模拟MapReduce): ```python from functools import reduce # 统计一段文本中各单词的长度,然后求 text = "Python map and reduce functions" words = text.split() # Map阶段:将每个单词映射为其长度 word_lengths = map(len, words) # Reduce阶段:将所有长度相加 total_length = reduce(lambda x, y: x + y, word_lengths) print(f"文本总长度(不含空格): {total_length}") # 输出: 28(5+3+3+9) ``` ### 注意事项: - `map`在Python 3中返回迭代器,因此只迭代一次,再次使用需要重新生成。 - `reduce`在Python 3中被移到了`functools`模块,需要导入。 - 使用`reduce`时,注意初始值的设置,避免空序列时出错(空序列必须提供初始值,否则抛出`TypeError`)。 --- §§相关问题§§: 1. Python中的`filter`函数如何使用?与`map`有何区别? 2. 如何用`reduce`实现找出列表中的最大值? 3. 在Python 3中,为什么`map``filter`返回的是迭代器而不是列表? 4. 请举例说明如何使用`map`处理多个可迭代对象? </think> ### Python的`map`与`reduce`函数详解 `map``reduce`是Python函数式编程的核心函数,用于高效处理集合数据。两者都接受函数作为参数,但有不同的应用场景运行机制。 #### 1. `map`函数:数据转换器 **功能**:将函数应用于可迭代对象的每个元素,返回新迭代器 **语法**: ```python map(function, iterable, ...) ``` **应用场景**: - 批量处理数据 - 类型转换 - 并行处理多个可迭代对象 **示例代码**: ```python # 示例1:数值转换 numbers = [1, 2, 3, 4] squared = map(lambda x: x**2, numbers) print(list(squared)) # [1, 4, 9, 16] # 示例2:多参数处理 names = ["Alice", "Bob"] ages = [25, 30] combined = map(lambda n, a: f"{n} is {a} years old", names, ages) print(list(combined)) # ['Alice is 25 years old', 'Bob is 30 years old'] # 示例3:类型转换 str_nums = ["1", "2", "3"] int_nums = map(int, str_nums) print(sum(int_nums)) # 6 ``` **特性**: - 惰性求值(Python 3返回迭代器) - 支持多个可迭代对象(并行处理) - 比列表推导式更节省内存 #### 2. `reduce`函数:数据聚合器 **功能**:将二元函数作用于序列元素进行累积计算 **语法**(需从`functools`导入): ```python from functools import reduce reduce(function, iterable[, initializer]) ``` **应用场景**: - 计算累积值(乘积、总) - 查找最大/最小值 - 复杂数据聚合 **示例代码**: ```python from functools import reduce # 示例1:计算乘积 numbers = [2, 3, 4] product = reduce(lambda x, y: x * y, numbers) print(product) # 24 # 示例2:查找最大值 values = [47, 11, 42, 13] max_value = reduce(lambda a, b: a if a > b else b, values) print(max_value) # 47 # 示例3:嵌套字典合并 dicts = [{'a': 1}, {'b': 2}, {'a': 3, 'c': 4}] merged = reduce(lambda d1, d2: {**d1, **d2}, dicts) print(merged) # {'a': 3, 'b': 2, 'c': 4} ``` **特性**: - 需要从`functools`导入(Python 3) - 可指定初始值(`initializer`参数) - 函数必须接受两个参数 - 处理过程:`f(f(f(a,b),c),d)` ### 对比总结 | 特性 | `map` | `reduce` | |--------------|-------------------------------|------------------------------| | **输入输出** | 1函数+N可迭代 → 新迭代器 | 1函数+1序列 → 单个值 | | **内存效率** | 高(惰性求值) | 依赖实现 | | **典型应用** | 数据转换、清洗 | 聚合计算、累积操作 | | **替代方案** | 列表推导式 | 循环累加、sum/max/min等函数 | | **导入要求** | 内置无需导入 | 需`from functools import reduce` | ### 实际应用场景 ```python # 电商订单处理示例 orders = [ {"items": 2, "price": 100}, {"items": 1, "price": 200}, {"items": 3, "price": 50} ] # 使用map计算每个订单总额 order_totals = map(lambda o: o["items"] * o["price"], orders) # 使用reduce计算总销售额 total_sales = reduce(lambda acc, val: acc + val, order_totals, 0) print(f"总销售额: ${total_sales}") # 总销售额: $450 ``` ### 注意事项 1. **惰性求值处理**:Python 3中`map`返回迭代器,需转换为列表或使用`next()` 2. **空序列处理**:`reduce`空序列需提供`initializer`,否则报错 3. **函数复杂度**:避免在`map/reduce`中使用复杂函数影响可读性 4. **替代方案**:简单场景优先使用列表推导式或内置函数(如`sum()`) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值