楼主:
eco100 ( )
2018-06-22 14:23:11例如 有一个字串str = 'AFBFDSAGDADEA'
我想知道A在这个字串的所有位置
有什么函数可以用吗
因为google了一下
有找到 str.find 跟str.rfind
但是这两个只能找出最大跟最小的下标
但我是要全部的
该不会要用循环了?
谢谢!
[i for i in range(len(string)) if string[i] == "A"]我只想到这样
楼主:
eco100 ( )
2018-06-22 14:38:00所以真的要用循环的意思吗?
我个人觉得Python是满依赖循环的...我也刚学,看看别人的意见吧
作者: hsnuyi (羊咩咩~) 2018-06-22 14:46:00
写code看的原来不是complexity或是易读性 而是有没有函数可用
作者:
ckc1ark (伪物)
2018-06-22 14:49:00map(lambda x:x.start(), re.finditer('A', 'AFBF....'))牛刀来了
我是从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不好意思 我也是初学者 只是想知道是不是有漏掉什么函数可以直接处理我遇到的问题
楼主:
eco100 ( )
2018-06-22 15:07:00感谢两位c大提供的资讯
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")) 也可以
真的只要找单字符吗?还是要找substring?前者已经有很多方法了。后者用str.find 可以提供starting index,或是re.match 再用MatchObject 的start(group)Oops 没留意已经有re.finditer
楼主:
eco100 ( )
2018-06-23 09:02:00欸 楼上说到重点了 下一步真的要找substring XD