在python中迭代字符串

时间:2014-02-08 21:20:10

标签: python

>>> 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,因为我正在接受子串。建议?

2 个答案:

答案 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)
相关问题