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


当前回答

您还可以执行以下操作:

txt = "Hello World!"
print (*txt, sep='\n')

这并不使用循环,但内部打印语句照顾它。

*将字符串解包到一个列表中并将其发送给print语句

Sep ='\n'将确保下一个字符打印在新行上

输出将是:

H
e
l
l
o
 
W
o
r
l
d
!

如果你确实需要一个循环语句,那么就像其他人提到的,你可以像这样使用for循环:

for x in txt: print (x)

其他回答

更简单:

for c in "test":
    print c

如果您希望使用更函数化的方法来迭代字符串(也许以某种方式转换它),您可以将字符串分割为字符,对每个字符应用一个函数,然后将生成的字符列表连接回字符串。

字符串本质上是一个字符列表,因此'map'将迭代字符串-作为第二个参数-将函数-第一个参数-应用到每个字符串。

例如,这里我使用一个简单的lambda方法,因为我想做的只是对字符进行简单的修改:这里,增加每个字符值:

>>> ''.join(map(lambda x: chr(ord(x)+1), "HAL"))
'IBM'

或者更一般地说:

>>> ''.join(map(my_function, my_string))

其中my_function接受一个char值并返回一个char值。

您还可以执行以下操作:

txt = "Hello World!"
print (*txt, sep='\n')

这并不使用循环,但内部打印语句照顾它。

*将字符串解包到一个列表中并将其发送给print语句

Sep ='\n'将确保下一个字符打印在新行上

输出将是:

H
e
l
l
o
 
W
o
r
l
d
!

如果你确实需要一个循环语句,那么就像其他人提到的,你可以像这样使用for循环:

for x in txt: print (x)

如果你曾经在需要使用__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是更好的选择。