2

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

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并将Ginger在我打印时输出fruit。但是我希望输出看起来像"grapes" # "Ginger"(注意""#符号)。

4

1 回答 1

2

您可以使用以下函数在此处使用字符串格式: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 循环(也不需要列表理解。您正在遍历字符串的每个字母,而不是每个单词。即使那样,您也不想遍历每个单词。

我还更改了您的正则表达式(请注意,我在正则表达式方面不是很好,所以可能有更好的解决方案)。

于 2013-08-12T06:41:19.300 回答