我如何在Python中迭代一个字符串(从字符串中获得每个字符,一次一个,每次通过循环)?


当前回答

约翰内斯指出,

for c in "string":
    #do something with c

你可以使用for循环构造在python中迭代几乎任何东西,

例如,open("file.txt")返回一个文件对象(并打开文件),遍历该文件中的行

with open(filename) as f:
    for line in f:
        # do something with line

如果这看起来像魔法,好吧,它有点像,但它背后的想法真的很简单。

有一个简单的迭代器协议,可以应用于任何类型的对象,使for循环在它上工作。

只需实现一个定义next()方法的迭代器,并在类上实现__iter__方法,使其可迭代。(__iter__当然应该返回一个迭代器对象,即定义了next()的对象)

参见官方文件

其他回答

如果你曾经在需要使用__next__()获取单词的下一个字符的情况下运行,请记住创建一个string_iterator并遍历它而不是原始字符串(它没有__next__()方法)

在这个例子中,当我找到一个char =[我一直在寻找下一个单词,而我没有找到],所以我需要使用__next__

在这里,对字符串进行for循环是没有用的

myString = "'string' 4 '['RP0', 'LC0']' '[3, 4]' '[3, '4']'"
processedInput = ""
word_iterator = myString.__iter__()
for idx, char in enumerate(word_iterator):
    if char == "'":
        continue

    processedInput+=char

    if char == '[':
        next_char=word_iterator.__next__()
        while(next_char != "]"):
          processedInput+=next_char
          next_char=word_iterator.__next__()
        else:
          processedInput+=next_char

这里有几个答案使用了range。Xrange通常更好,因为它返回一个生成器,而不是一个完全实例化的列表。当内存和或可迭代对象的长度大不相同时,xrange是更好的选择。

更简单:

for c in "test":
    print c

约翰内斯指出,

for c in "string":
    #do something with c

你可以使用for循环构造在python中迭代几乎任何东西,

例如,open("file.txt")返回一个文件对象(并打开文件),遍历该文件中的行

with open(filename) as f:
    for line in f:
        # do something with line

如果这看起来像魔法,好吧,它有点像,但它背后的想法真的很简单。

有一个简单的迭代器协议,可以应用于任何类型的对象,使for循环在它上工作。

只需实现一个定义next()方法的迭代器,并在类上实现__iter__方法,使其可迭代。(__iter__当然应该返回一个迭代器对象,即定义了next()的对象)

参见官方文件

如果在遍历字符串时需要访问索引,请使用enumerate():

>>> for i, c in enumerate('test'):
...     print i, c
... 
0 t
1 e
2 s
3 t