>>> bob = "bob"
>>> range(0, len(bob))
[0, 1, 2]
>>> bob[0:2]
'bo'
>>> bob[0:3]
'bob'
当我需要索引号时,有没有一种方便的方法在python中迭代字符串?如果我使用range(0, len(astring))
进行for循环,它最终会变为倒数第二个字符:我将不得不写range(0, len(astring) + 1)
,这有点烦人。我无法做for c in astring
,因为我正在接受子串。建议?
答案 0 :(得分:3)
使用enumerate
:
for i,c in enumerate('bob'):
print('{}: {}'.format(c,i))
b: 0
o: 1
b: 2
你对“子串”的描述有点不明确,但切片的可能性就是你所需要的:
s = 'banana'
for i,c in enumerate(s):
print(s[i:])
banana
anana
nana
ana
na
a
值得注意的是,您可以将开始或结束的一个切片(或两者都绑定!)切断,切片将一直到此为止。
答案 1 :(得分:1)
假设你有:
>>> st='a string with substrings'
当然很容易将其拆分:
>>> st.split()
['a', 'string', 'with', 'substrings']
但是假设你想根据某些条件处理字符串的索引。
您可以定义所需的索引(这里可以通过空格来定义,但可能是其他条件):
>>> sub_strings=[0]+[i+1 for i, c in enumerate(st) if c.isspace()]+[len(st)]
然后你可以这样使用slice
:
>>> for t in zip(sub_strings, sub_strings[1:]):
... print st[slice(*t)], t
...
a (0, 2)
string (2, 9)
with (9, 14)
substrings (14, 24)