搜索字符串后打印文本

时间:2013-08-12 06:26:50

标签: python regex

我正在按照教程识别和打印特定字符串之间的单词;

f是字符串Mango grapes Lemon Ginger Pineapple

def findFruit(f):
    global fruit
    found = [re.search(r'(.*?) (Lemon) (.*?)$', word) for word in f]
        for i in found:
            if i is not None:
                fruit = i.group(1)
                fruit = i.group(3)
我打印grapes时会输出

Gingerfruit。但是我想要的输出看起来像"grapes" # "Ginger"(请注意""#符号。

1 个答案:

答案 0 :(得分:2)

您可以在此处使用string formatting并使用str.format()功能:

def findFruit(f):
    found = re.search(r'.*? (.*?) Lemon (.*?) .*?$', f)
    if found is not None:
       print '"{}" # "{}"'.format(found.group(1), found.group(2))

或者,Kimvais在评论中发布了一个可爱的解决方案:

print '"{0}" # "{1}"'.format(*found.groups())

我做了一些编辑。首先,这里不需要for循环(也不需要列表理解。你在遍历字符串的每个字母而不是每个单词。即使这样你也不想遍历每个单词。

我也改变了你的正则表达式(注意我在正则表达式中不是那么好,所以可能有一个更好的解决方案)。