Python_字符串查找与分隔
#字符串常用方法
s='apple,peach,banana,peach,pear'
#返回第一次出现的位置
print(s.find('peach'))
#指定位置开始查找
print(s.find('peach',7))
#指定范围中进行查找
print(s.find('peach',7,20))
#从字符串尾部向前查找
print(s.rfind('p'))
#返回首次出现的位置
print(s.index('p'))
#统计子字符串出现的次数
print(s.count('p')) #Python内置函数和内置对象的方法,运行速度快,并且运行稳定。
from string import ascii_letters
from random import choice
from time import time letters = ''.join([choice(ascii_letters) for i in range(999999)])
def positions_of_character(sentence,ch): #使用字符串呢对象的find()方法
result=[]
index=0
index=sentence.find(ch,index+1)
while index !=-1:
result.append(index)
index=sentence.find(ch,index+1)
return result def demo(s,c): #普通方法,逐个字符比较
result=[]
for i,ch in enumerate(s):
if ch==c:
result.append(i)
return result start = time()
positions_of_character(letters,'a')
print(time()-start) #0.008852958679199219 start=time()
p=demo(letters,'a')
print(time()-start) #0.0904378890991211 #split()从字符串左端开始将其分隔成多个字符串,并返回包含分隔结果的列表 #rsplit()从字符串右端开始将其分隔成多个字符串,并返回包含分隔结果的列表 #partition()、rpartition()用来以指定字符串为分隔符将原字符串分隔为3部分,即分隔符之前的字符串、分隔符字符串和分隔符之后的字符串。如果指定的分隔符不再原字符串中,则返回原字符串和两个空字符串 s='apple,peach,banana,pear'
li=s.split(',')
print(li)
li2=s.partition(',') #从左侧使用逗号进行切分
print(li2)
#('apple,peach,banana,pear', '', '')
li3=s.rpartition(',')
print(li3)
#('apple,peach,banana', ',', 'pear')
li4=s.rpartition('banana') #使用字符串作为分隔符
print(li4)
# ('apple,peach,', 'banana', ',pear')
s1='2014-10-31'
t=s1.split('-')
print(t)
# [2014, 10, 31]
li5=list(map(int,t)) #将分隔结果转换为整数
print(li5)
# ['hello', 'world', 'My', 'nname', 'is', 'zWrite'] #对于split()和rsplit()方法,如果不知定分隔符,则字符串中的任何空白字符(包括空格、换行符、制表符等)的连续出现都将被认为是分隔符,返回包含最终分隔结果的列表
s2='hello world\n\n My nname is zWrite'
li6=s2.split()
print(li6)
# ['hello', 'world', 'My', 'name', 'is', 'zWrite']
s3='\n\nhello world\n\n\n My name is zWrite '
li7=s3.split()
print(li7)
# ['hello', 'world', 'My', 'name', 'is', 'zWrite']
s4='\n\nhello\t\t world \n\n\n My name is zWrite '
li8=s4.split()
print(li8)
# ['hello', 'world \n\n\n My name is zWrite'] #split()与rsplit()方法允许指定最大分隔次数
s5='\n\nhello\t\t world \n\n\n My name is zWrite'
print(s5.split(maxsplit=1)) #分隔1次
li9=s5.rsplit(maxsplit=1)
print(li9)
# ['\n\nhello\t\t world \n\n\n My name is', 'zWrite']
li10=s5.split(maxsplit=20) #最大分隔次数大于实际可分隔次数时,自动忽略
print(li10)
#['hello', 'world', 'My', 'name', 'is', 'zWrite']
Python_字符串查找与分隔的更多相关文章
- Rabin-Karp指纹字符串查找算法
首先计算模式字符串的散列函数, 如果找到一个和模式字符串散列值相同的子字符串, 那么继续验证两者是否匹配. 这个过程等价于将模式保存在一个散列表中, 然后在文本中的所有子字符串查找. 但不需要为散列表 ...
- 自己动手写文件查找,字符串查找,查询jar包等工具
文件查找——搜索当前目录下的文件 知道大概的文件名称,使用 findf FileName findf.py import argparse, re, os from os.path import jo ...
- 关于字符串查找 charindex ,Patindex 还有一个like
字符串查找.在模糊朝找的情况下,其实3者的效率是差不多的.都需要一个一个取出来然后扫一遍╮(╯_╰)╭.然而用法还是会有一点儿的区别 1 charindex (查找的字符串,字符串表达式[,开始查找的 ...
- python 字符串查找
python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法. 1 find()方法: )##从下标1开始,查找在字符串里第一个出现的子串:返回结果3 ...
- Sunday算法(字符串查找、匹配)
字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore).两个算法在最坏情况下均具有线性的查找时间.但是在实用上,KMP算法并不比最简单的 ...
- lintcode:strStr 字符串查找
题目: 字符串查找 字符串查找(又称查找子字符串),是字符串操作中一个很有用的函数.你的任务是实现这个函数. 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source ...
- Rabin-Karp字符串查找算法
1.简介 暴力字符串匹配(brute force string matching)是子串匹配算法中最基本的一种,它确实有自己的优点,比如它并不需要对文本(text)或模式串(pattern)进行预处理 ...
- php中常用的字符串查找函数strstr()、strpos()实例解释
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 1.$haystack被查找的字 ...
- 数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找
数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找 Boyer-Moore字符串查找算法 注意,<算法4>上将这个版本的实现称为Broyer-Moore算法,我看了 ...
随机推荐
- C语言的引用计数与对象树
引用计数与对象树 cheungmine 2013-12-28 0 引言 我们经常在C语言中,用指针指向一个对象(Object)的结构,也称为句柄(Handle),利用不透明指针的技术把结构数据封装成对 ...
- ARM Linux内核Input输入子系统浅解
--以触摸屏驱动为例 第一章.了解linux input子系统 Linux输入设备总类繁杂,常见的包括有按键.键盘.触摸屏.鼠标.摇杆等等,他们本身就是字符设备,而linux内核将这些 ...
- 网站开发进阶(二十三)Address already in use: JVM_Bind <null>:8088
Address already in use: JVM_Bind <null>:8088 注:请点击此处进行充电! 阿里云服务器又莫名其妙的宕掉!内存泄漏问题依然存在,又出现了端口占用的情 ...
- 一个简单的基于 DirectShow 的播放器 1(封装类)
DirectShow最主要的功能就是播放视频,在这里介绍一个简单的基于DirectShow的播放器的例子,是用MFC做的,今后有机会可以基于该播放器开发更复杂的播放器软件. 注:该例子取自于<D ...
- linux下32位汇编调用规则
传递给系统调用的参数必须安装参数顺序一次放到寄存器中,当系统调用完成后,返回值放在eax中: 当系统调用参数<=5个时: eax中存放系统调用的功能号,传递给系统调用的参数顺序依次放到寄存器:e ...
- IOS微信分享功能简单实现
PS:此文以简单实现功能为主,不足之前还望指点,大神勿喷. 在此之前如何申请微信认证的Key就不说了,公司一般会有人搞 1.首先下载微信SDK:微信SDK下载地址(更多关于微信SDK信息文档请访问官方 ...
- 在Eclipse 中集成SVN
在项目开发的过程中,我们需要用到版本控制工具,最常见的也就是SVN了,下面就来介绍最简单的一种在Elipse中集成svn工具. 第一步:下载 svn包,如site-1.6.5.zip或者site-1. ...
- ruby正则表带式对象使用备忘
ruby对于正则表达式的使用是非常灵活的,提供了专门的正则表达式对象Regexp.其包括match实例方法,字符串也含有该方法.so可以这么做: /a/ =~ "a" " ...
- 项目中Orcale存储过程优化记录
今天对之前写的Orcale存储过程做了一些优化,使其变得更加灵活,之前写的存储过程是使用游标存储SQL执行结果,但是使用游标带来的弊端是,在声明时,它所执行的SQL就已经被写死,无法修改.若想更加灵活 ...
- Eclipse配置SpringBoot
从这一博客开始学习SpringBoot,今天学习Eclipse配置SpringBoot.Eclipse导入SpringBoot有两种方式,一种是在线一个是离线方式. 一.在线安装 点击Eclipse中 ...