作者eco100 ( )
看板Python
標題[問題] 尋找字串裡面關鍵字的所有下標
時間Fri Jun 22 14:23:11 2018
例如 有一個字串str = 'AFBFDSAGDADEA'
我想知道A在這個字串的所有位置
有什麼函數可以用嗎
因為google了一下
有找到 str.find 跟str.rfind
但是這兩個只能找出最大跟最小的下標
但我是要全部的
該不會要用迴圈了?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.32.9
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1529648593.A.CE4.html
1F:→ clsmbstu: [i for i in range(len(string)) if string[i] == "A"] 06/22 14:32
2F:→ clsmbstu: 我只想到這樣 06/22 14:32
3F:→ eco100: 所以真的要用迴圈的意思嗎? 06/22 14:38
4F:→ clsmbstu: 我個人覺得Python是滿依賴迴圈的... 06/22 14:39
5F:→ clsmbstu: 我也剛學,看看別人的意見吧 06/22 14:40
6F:→ hsnuyi: 寫code看的原來不是complexity或是易讀性 而是有沒有函數 06/22 14:46
7F:→ hsnuyi: 可用 06/22 14:46
8F:推 ckc1ark: map(lambda x:x.start(), re.finditer('A', 'AFBF....')) 06/22 14:49
9F:→ ckc1ark: 牛刀來了 06/22 14:49
10F:→ clsmbstu: 我是從R過來的使用者 坦白說我是覺得有函數可用的狀況下 06/22 14:51
11F:→ clsmbstu: complexity還有易讀性都好多了...... 06/22 14:52
12F:→ clsmbstu: In R: gregexpr("A", string)[[1]] 解決 06/22 14:53
13F:→ clsmbstu: 所以我滿理解這篇原PO的疑問 hsnuyi不需要這樣吧 = = 06/22 14:54
14F:→ hsnuyi: 看來上面用regex的方法比loop 好懂 嗯嗯 06/22 14:55
15F:→ eco100: 不好意思 我也是初學者 只是想知道是不是有漏掉什麼函數 06/22 14:56
16F:→ eco100: 可以直接處理我遇到的問題 06/22 14:56
19F:→ ckc1ark: 看這點閱數我就相信沒有可以直接處理的函數了 06/22 15:01
20F:→ ckc1ark: 當然也有可能有library會實作 06/22 15:02
21F:→ eco100: 感謝兩位c大提供的資訊 06/22 15:07
22F:推 brad0315: str.find('A',2) 可以多一個控制項 06/22 15:15
23F:→ brad0315: 如果你知道有幾個,那就好辦了 06/22 15:16
24F:→ eco100: 有啊 str.count就可以知道了 06/22 15:19
25F:推 TuCH: [x.start() for x in re.finditer('A', 'AFBF....')] 06/22 15:29
26F:→ eco100: 剛google到 import more_itertools as mit 06/22 15:29
27F:→ eco100: list(mit.locate(str, lambda x: x == "A")) 也可以 06/22 15:30
28F:→ adrianshum: 真的只要找單字元嗎?還是要找substring?前者已經有 06/23 07:35
29F:→ adrianshum: 很多方法了。後者用str.find 可以提供starting index, 06/23 07:35
30F:→ adrianshum: 或是re.match 再用MatchObject 的start(group) 06/23 07:35
31F:→ adrianshum: Oops 沒留意已經有re.finditer 06/23 07:36
32F:→ eco100: 欸 樓上說到重點了 下一步真的要找substring XD 06/23 09:02