在for循环中测试索引 - Python

时间:2014-08-13 13:40:20

标签: python list for-loop

非常简单的问题,虽然我很难解决它。

看看代码,我将在下面解释:

def printc(some_text):
    split_text = list(some_text)

    for x in split_text:
        if x is '{'
            # this is what i need help with


printc("{CCyan, {RRed, {YYello)

这背后的想法,它仍然是代码开发的早期,但我想要做的是创建一个迭代器,搜索“split_text”并找到字符'{'然后我想测试什么字符是就在它旁边。我该怎么做呢?

例如,通过split_text搜索并找到第一个{我想看看它旁边的字符是A,B,C等...

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

单个正则表达式更容易。

import re
re.findall('{(.)', some_text)

输出:

['C', 'R', 'Y']

答案 1 :(得分:2)

for x, y in zip(some_text, some_text[1:]):
    if x == '{':
        print y

你甚至可以让它变得更简单:

chars = [y for (x, y) in zip(some_text, some_text[1:]) if x == '{']

答案 2 :(得分:1)

如果我需要这样的东西,我通常会成对迭代:

from itertools import tee, izip

def pairwise(iterable):
    """Iterate in pairs

    >>> list(pairwise([0, 1, 2, 3]))
    [(0, 1), (1, 2), (2, 3)]
    >>> tuple(pairwise([])) == tuple(pairwise('x')) == ()
    True
    """
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

用法如下:

for left, right in pairwise(iterable):
    ...