作者:
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