[问题] 寻找字串里面关键字的所有下标

楼主: eco100 ( )   2018-06-22 14:23:11
例如 有一个字串str = 'AFBFDSAGDADEA'
我想知道A在这个字串的所有位置
有什么函数可以用吗
因为google了一下
有找到 str.find 跟str.rfind
但是这两个只能找出最大跟最小的下标
但我是要全部的
该不会要用循环了?
谢谢!
作者: clsmbstu   2018-06-22 14:32:00
[i for i in range(len(string)) if string[i] == "A"]我只想到这样
楼主: eco100 ( )   2018-06-22 14:38:00
所以真的要用循环的意思吗?
作者: clsmbstu   2018-06-22 14:39:00
我个人觉得Python是满依赖循环的...我也刚学,看看别人的意见吧
作者: hsnuyi (羊咩咩~)   2018-06-22 14:46:00
写code看的原来不是complexity或是易读性 而是有没有函数可用
作者: ckc1ark (伪物)   2018-06-22 14:49:00
map(lambda x:x.start(), re.finditer('A', 'AFBF....'))牛刀来了
作者: clsmbstu   2018-06-22 14:51:00
我是从R过来的使用者 坦白说我是觉得有函数可用的状况下complexity还有易读性都好多了......In R: gregexpr("A", string)[[1]] 解决所以我满理解这篇原PO的疑问 hsnuyi不需要这样吧 = =
作者: hsnuyi (羊咩咩~)   2018-06-22 14:55:00
看来上面用regex的方法比loop 好懂 嗯嗯
楼主: eco100 ( )   2018-06-22 14:56:00
不好意思 我也是初学者 只是想知道是不是有漏掉什么函数可以直接处理我遇到的问题
作者: clsmbstu   2018-06-22 15:00:00
对啊好懂最重要了是不是 https://tinyurl.com/ycj3g5sx
作者: ckc1ark (伪物)   2018-06-22 15:01:00
https://stackoverflow.com/q/13009675看这点阅数我就相信没有可以直接处理的函数了当然也有可能有library会实作
楼主: eco100 ( )   2018-06-22 15:07:00
感谢两位c大提供的资讯
作者: brad0315 (老默)   2018-06-22 15:15:00
str.find('A',2) 可以多一个控件如果你知道有几个,那就好办了
楼主: eco100 ( )   2018-06-22 15:19:00
有啊 str.count就可以知道了
作者: TuCH (谬客)   2018-06-22 15:29:00
[x.start() for x in re.finditer('A', 'AFBF....')]
楼主: eco100 ( )   2018-06-22 15:29:00
刚google到 import more_itertools as mitlist(mit.locate(str, lambda x: x == "A")) 也可以
作者: adrianshum (Alien)   2018-06-23 07:35:00
真的只要找单字符吗?还是要找substring?前者已经有很多方法了。后者用str.find 可以提供starting index,或是re.match 再用MatchObject 的start(group)Oops 没留意已经有re.finditer
楼主: eco100 ( )   2018-06-23 09:02:00
欸 楼上说到重点了 下一步真的要找substring XD

Links booklink

Contact Us: admin [ a t ] ucptt.com