Python 3 - 用下一个字母检查字符串中的字母

时间:2015-03-04 23:35:48

标签: python string python-3.x indexing

如果我有一个字符串

String = 'ABCEEFGH'

如何在不退出索引的情况下查看每个字母旁边的字母?

for index in range(len(String)):
    if String[index] == String[index+1]: 
        print('Double')

4 个答案:

答案 0 :(得分:4)

您可以使用enumerateslicing字符串直到最后一个字符:

String = 'ABCEEFGH'

for ind,ch in enumerate(String[:-1]):
    if ch == String[ind+1]:
        print('Double')

在您自己的代码中,逻辑将是相同的len(String)-1,但枚举是要走的路:

for index in range(len(String)-1):
    if String[index] == String[index+1]:
        print('Double')

您看到的事实只是想检查两个相邻的字符是否相同,可能使用any是最好的:

String = 'ABCEEFGH'

if any( ch == String[ind+1] for ind, ch in enumerate(String[:-1])):
        print('Double',ch)

any会在条件为True时短路并中断循环,否则如果我们没有匹配则评估为False

答案 1 :(得分:1)

如果您考虑与之前的字母而不是下一个字母进行比较,这些问题几乎总是更容易。记住你已经看过的字母要比向前看更容易。

text = 'ABCEEFGH'
prev = ''
for letter in text:
    if letter == prev:
       print("letter duplicated:", letter)
    prev = letter

答案 2 :(得分:0)

您可以使用正则表达式:

for match in re.findall(r'([a-z])\1', your_string):
    print('Double letters found here.')

答案 3 :(得分:0)

>>> text = 'ABCEEFGH'
>>> for c1, c2 in zip(text, text[1:]):
        if c1 == c2:
            print 'double'


double