我正在按照教程识别和打印特定字符串之间的单词;
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"
(请注意""
和#
符号。
答案 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循环(也不需要列表理解。你在遍历字符串的每个字母而不是每个单词。即使这样你也不想遍历每个单词。
我也改变了你的正则表达式(注意我在正则表达式中不是那么好,所以可能有一个更好的解决方案)。