如何在Python中返回字符串中的字符

如何在Python中返回字符串中的字符,python,arrays,string,algorithm,loops,Python,Arrays,String,Algorithm,Loops,我想弄明白的是如何回到字符串中的位置。 说我有一句话,我会检查每一个字母,但一旦我找到一个Y 我需要检查之前的字符是否是元音。我是这门语言的初学者,所以我试着练习一些我在大学学习的C语言 我用For循环检查单词中的字母,但我不知道是否有任何方法返回索引,我知道在C语言中,字符串被视为数组,所以我会有一个For循环,一旦我得到一个Y,那就是我的单词[I]我是我当前位置的索引,所以我通常要做的是检查单词[I-1]在Aeiou,i-1是我目前所在职位之前的职位。现在我不知道如何在python中做到这一

我想弄明白的是如何回到字符串中的位置。 说我有一句话,我会检查每一个字母,但一旦我找到一个Y 我需要检查之前的字符是否是元音。我是这门语言的初学者,所以我试着练习一些我在大学学习的C语言


我用For循环检查单词中的字母,但我不知道是否有任何方法返回索引,我知道在C语言中,字符串被视为数组,所以我会有一个For循环,一旦我得到一个Y,那就是我的单词[I]我是我当前位置的索引,所以我通常要做的是检查单词[I-1]在Aeiou,i-1是我目前所在职位之前的职位。现在我不知道如何在python中做到这一点,如果有人能帮我一把,那就太棒了:

在python中,字符串是可编辑的,所以你可以得到字符串的[I-1]元素

你可以在这里使用正则表达式,例如,在使用Y之前标记没有元音的单词:

inp=blahYes 如果重新搜索“[^\WAEIOUaeiou_uuuuu]Y”,输入: 打印无效 其他: 打印有效
一个选项是按索引进行迭代,就像在C中一样:

word = "today"

for i in range(1, len(word)):
    if word[i].lower() == 'y' and word[i-1].lower() in 'aeiou':
        print(word[i-1:i+1])
另一种方法是将字符串压缩,并将其自身移动一个字符:

for x, y in zip(word, word[1:]):
    if y.lower() == 'y' and x.lower() in 'aeiou':
        print(x+y)

您可以在C样式中轻松地执行此操作:

vowels = ['a', 'e', 'i', 'o', 'u']

for i in range (0, len(your_string):
    if your_string[i].lower() == 'y': 
        # do your calculation here
        if your_string[i-1].lower() in vowels:
            print (f"String has vowel '{your_string[i-1]' at index {i-1} and has 'y' at i)
您可以使用_字符串[i]。lower=='y',这样它将同时匹配y和y

或者您也可以使用枚举函数

for index, value in enumerate(your_string):
    if val.lower() == 'y' :
        # check if index-1 was a vowel

这里已经有了一个很好的答案,但我想指出一种更像C的方法来迭代字符串或其他任何东西

有些人可能认为它不符合python,但在我看来,在编写某些算法时,它通常是一种很好的方法:

word=今天 len_word=lenword 元音=aeiou i=0 而我这种方法为您提供了更大的灵活性,例如,您可以执行更复杂的操作,例如使用索引来回跳跃,但是,您还需要更加小心,不要将索引设置为超出iterable范围的内容。

为什么不向后迭代呢?请查看enumerate函数。这会将列表索引和列表项作为元组提供给循环。