热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python整形如何转字符串,python字符串split方法

自定义实现str的spilt方法:如果切割符为默认值:字符串首尾的空白字符去掉,不参与分割,即不像指定分隔符会切割出空字符串指定切割符不能是空字符串最大切割次数,默认为-1切割次数

飞艇稳赚不赔的打法

 自定义实现str的spilt方法:

如果切割符为默认值:字符串首尾的空白字符去掉,不参与分割,即不像指定分隔符会切割出''空字符串指定切割符不能是空字符串最大切割次数,默认为-1切割次数为负数时,整个字符串切割正数时,切割给定的次数

 

# 自定义实现split方法:# 算法:# 1. 遍历这个字符串,start=0,# 判断当前字符以及后续的几个字符是否时sep# 如果不是,就继续遍历,如果是,就把这个位置记录下来作为end的坐标# 2. 基于start和end的切片,取出来内容,放到一个结果list里面去# 3. start设定为下一个要遍历的坐标,重复上述的过程# start=0,遍历s,找到sep的内容# 坐标为2的时候是个空白,end=2# s[start:end] ---> he ---> 放到一个list里面# 继续向后遍历,找到非空白的时候,start=4# 继续遍历,找到sep,end=6,s[start:end] ---> is放到结果list里面去# 字符串已经到了最后end=len(s) # 0123456789# 'he is boy'def split(s, sep=None, maxsplit=-1): # s不是str类型,结束程序 if not isinstance(s, str): return None # (not (sep is None or isinstance(sep, str))) ---> sep不是None也不是str类型,为True # sep == '' ---> sep为空字符串,为True # 两者满足一个,就结束程序,即sep不为None,或者是不为空的字符串 if (not (sep is None or isinstance(sep, str))) or sep == '': return None # maxsplit必须是int类型,否则结束程序 if not isinstance(maxsplit, int): return None if maxsplit == 0: # 切割次数为0的时候,直接返回一个列表,列表包含默认字符串 return [s] result = [] # 切割后单词的list length = len(s) - 1 # 字符串最后一个字符的坐标 start = 0 # 从0位置开始取字符串 end = length # end先设定为最后一个字符 i = 0 # 从0开始遍历 if sep is None: sep = '\t\r\n ' flag = True # 标志位:表示是否遇到切割的字符,遇到就设定为False while i <= length: # 没有遍历到结尾的时候,就一直执行while # s[i] in sep ---> 遇到了切割字符 # flag为True ---> 当前i的前面不是sep # i == length ---> 判断当前位置是否到了结尾 if s[i] in sep and flag: end = i # 将end设定为当前位置 flag = False # 标志位设定为False,表示遇到了sep if start != end: # start != end ---> 即start和end相等时,不切割,根据split规格,字符串前面如果是空白字符,不进行切割 if maxsplit <0: # 根据split的规则,maxsplit小于0时,不限制切割次数 result.append(s[start:end]) # 将start和end之间的内容,放到结果list里面 elif maxsplit > 0: # 有切割次数的时候,且大于0时执行 result.append(s[start:end]) maxsplit -= 1 else: result.append(s[start:]) # maxsplit为0时执行,指定切割次数小于切割符在字符串中的个数,随着maxsplit的递减,才会出现maxsplit为0的情况 break elif s[i] not in sep: # 判断当前字符不是sep if not flag: # 如果flag是False start = i # start设定为i,start位置是开始要取的字符串的内容 flag = True # 把标志位改为True i += 1 # 遇到下一个遍历的字符 if i == length and s[i] not in sep: # i位置到达了字符串最末尾且最后一个字符不在sep中时,把剩余字符串添加到列表中 result.append(s[start:]) # 将最后没有取走的字符串添加到result中 else: # 切割的字符使用的不是默认的空白值,而是指定的值 while i <= length: # 从0开始,到字符的最长位置之间做遍历 if s[i:i+len(sep)] == sep: # 判断当前坐标及其内容是否是分隔字符 # 是执行这个if代码 end = i # 将end设定为当前坐标 if maxsplit <0: # 根据split的规则,maxsplit小于0时,不限制切割次数 result.append(s[start:end]) # 将start和end之间的内容,放到结果list里面 elif maxsplit > 0: # 有切割次数的时候,且大于0时执行 result.append(s[start:end]) maxsplit -= 1 else: result.append(s[start:]) break start = i + len(sep) # 把start位置设定为分隔符后面的第一个字符位置 i = start else: # 从分隔符号后面的第一个字符位置继续遍历 i += 1 # 遍历下一个字符 if i > length: # i位置到达了字符串最末尾,把剩余字符串添加到列表中;如果不加此块代码,字符串后面几个字符不满足sep时,会被丢失 result.append(s[start:]) # 将最后没有取走的字符串添加到result中 return result # 返回结果if __name__ == '__main__': print(split(' I am a boy!', None, 2)) print(split('\tI am a \r\n\t boy! ', None, 14)) print(split('I am a \r\n\t boy! ', ' ', 7)) print(split('*I am a**boy!**', '*', 14))

 


推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • Python进阶笔记:深入理解装饰器、生成器与迭代器的应用
    本文深入探讨了Python中的装饰器、生成器和迭代器的应用。装饰器本质上是一个函数,用于在不修改原函数代码和调用方式的前提下为其添加额外功能。实现装饰器需要掌握闭包、高阶函数等基础知识。生成器通过 `yield` 语句提供了一种高效生成和处理大量数据的方法,而迭代器则是一种可以逐个访问集合中元素的对象。文章详细解析了这些概念的原理和实际应用案例,帮助读者更好地理解和使用这些高级特性。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 本课程深入探讨了 Python 中自定义序列类的实现方法,涵盖从基础概念到高级技巧的全面解析。通过实例演示,学员将掌握如何创建支持切片操作的自定义序列对象,并了解 `bisect` 模块在序列处理中的应用。适合希望提升 Python 编程技能的中高级开发者。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 探讨 OpenCV 和 Matlab 在最小二乘法直线拟合中的结果差异及原因分析
    在使用最小二乘法进行直线拟合时,OpenCV和Matlab的计算结果存在显著差异。通过详细分析发现,这种不一致性可能源于两种软件在算法实现、数据处理方式以及数值稳定性上的不同。进一步研究还表明,输入数据的格式和预处理步骤也可能对最终结果产生影响。为了确保结果的一致性和准确性,建议在实际应用中对这两种工具的输出进行对比验证,并选择最适合具体应用场景的方法。 ... [详细]
  • 二分查找算法详解与应用分析:本文深入探讨了二分查找算法的实现细节及其在实际问题中的应用。通过定义 `binary_search` 函数,详细介绍了算法的逻辑流程,包括初始化上下界、循环条件以及中间值的计算方法。此外,还讨论了该算法的时间复杂度和空间复杂度,并提供了多个应用场景示例,帮助读者更好地理解和掌握这一高效查找技术。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • Python内置模块详解:正则表达式re模块的应用与解析
    正则表达式是一种强大的文本处理工具,通过特定的字符序列来定义搜索模式。本文详细介绍了Python内置的`re`模块,探讨了其在字符串匹配、验证和提取中的应用。例如,可以通过正则表达式验证电子邮件地址、电话号码、QQ号、密码、URL和IP地址等。此外,文章还深入解析了`re`模块的各种函数和方法,提供了丰富的示例代码,帮助读者更好地理解和使用这一工具。 ... [详细]
  • 本文详细介绍了 Python 中字符串处理的各种技巧,包括查找、复制、替换、删除、截取、连接、比较、包含检测及大小写转换等操作。特别强调了如何使用 `strip()`、`lstrip()` 和 `rstrip()` 方法去除字符串中的空格和特殊符号,以及如何通过简单的赋值语句实现字符串的复制。此外,还提供了丰富的示例代码,帮助读者更好地理解和应用这些技巧。 ... [详细]
author-avatar
穿靴子的猫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有