我试图找到所有出现的“|”在一个字符串中。
def findSectionOffsets(text):
startingPos = 0
endPos = len(text)
for position in text.find("|",startingPos, endPos):
print position
endPos = position
但是我收到了一个错误:
for position in text.find("|",startingPos, endPos):
TypeError: 'int' object is not iterable
答案 0 :(得分:41)
功能:
def findOccurrences(s, ch):
return [i for i, letter in enumerate(s) if letter == ch]
findOccurrences(yourString, '|')
将返回yourString
出现的|
索引列表。
答案 1 :(得分:12)
如果你想要字符串中所有|
字符出现的索引,你可以这样做
In [30]: import re
In [31]: str = "aaaaaa|bbbbbb|ccccc|dddd"
In [32]: [x.start() for x in re.finditer('\|', str)]
Out[32]: [6, 13, 19]
你也可以做到
In [33]: [x for x, v in enumerate(str) if v == '|']
Out[33]: [6, 13, 19]
答案 2 :(得分:2)
这里使用正则表达式更容易;
import re
def findSectionOffsets(text):
for m in re.finditer('\|', text):
print m.start(0)
答案 3 :(得分:2)
import re
def findSectionOffsets(text)
for i,m in enumerate(re.finditer('\|',text)) :
print i, m.start(), m.end()
答案 4 :(得分:1)
text.find
返回一个整数(找到所需字符串的索引),因此您可以对其进行循环运行。
我建议:
def findSectionOffsets(text):
indexes = []
startposition = 0
while True:
i = text.find("|", startposition)
if i == -1: break
indexes.append(i)
startposition = i + 1
return indexes
答案 5 :(得分:1)
text.find()只返回第一个结果,然后你需要根据它设置新的起始位置。像这样:
def findSectionOffsets(text):
startingPos = 0
position = text.find("|", startingPos):
while position > -1:
print position
startingPos = position + 1
position = text.find("|", startingPos)
答案 6 :(得分:0)
如果text
是要计算其包含多少"|"
的字符串,则下面的代码行将返回计数:
len(text.split("|"))-1
注意:这也适用于搜索子字符串。