使用字符串时跳过 for 循环中的迭代(在 Python 中)

Skipping iterations in a for loop when working with strings (in Python)

我正在尝试编写一个使用字符串作为输入(句子或单词)的程序。使用 for 循环,我依次遍历每个字符。当我遇到字母 p 时,程序应该跳过几次迭代。我发现了很多关于在处理整数时跳过迭代的技巧。但是,在我的代码中,我使用的是字符串。有人对此有任何有用的提示吗?提前致谢!

这是我的代码的一段改编(我目前拥有的):

language_input = input()

for character in language_input:

    if character == "p":
        # Now, I have to skip a few iterations (e.g. skip 3 characters)

您可以使用一个额外的变量,如果已设置则什么也不做

language_input = input()
check = 0
for character in language_input:
    if check:
        check -= 1
        continue

    if character == "p":
        check = 3 #set to number of iterations you want to skip

这取决于您需要如何处理字符串中的字符。这是一个想法:

language_input = input()
i = 0
while i < len(language_input):
    if language_input[i] == 'p':
        i += 3
    else:
        i += 1
        # do something else

您可以使用迭代器:

language_input = 'abcdefghij'
s = iter(language_input)
while True:
    try:
        character = next(s)
        if character == 'd':
            print('…', end='')
            next(s)
            next(s)
            next(s)
        print(character, end='')
    except StopIteration:
        break

输出:abc…dhij

为了更有效地跳过许多项目,您可以使用 itertools.islice:

from itertools import islice

# … only showing changed part of code
if character == 'd':
    print('…', end='')
    list(islice(s, 3)) # get 3 elements at once
# …