2016-03-15 126 views
0

我输入一个文本文件(行)(所有字符串)。我试图使card_type成为true,以便它可以输入if语句,但是,它永远不会输入IF语句。从打印线出来的输出是:Python正则表达式匹配

imm48-1gb-sfp/imm48-1gb-sfp 
imm-2pac-fp3/imm-2pac-fp3 
imm5-10gb-xfp/imm5-10gb-xfp 
sfm4-12/sfm4-12 

这是代码:

print str(card_type)    
    if card_type == re.match(r'(.*)/(.*)',line): 
     card_type = card_type.group(1) 

回答

2

re.match将返回一个MatchObject如果有匹配或None如果没有。下面的代码之前/性格捕捉部分:

import re 

line = 'imm48-1gb-sfp/imm48-1gb-sfp' 
match = re.match(r'(.*?)/', line) 
if match: 
    card_type = match.group(1) 
    print card_type 
+0

确实,我已经改变了这个例子使用非贪婪模式'。*? '这将在输入有多个'/'字符的情况下起作用。 – niemmi

1

CARD_TYPE是一个字符串。 re.match()返回布尔值(true或false,正则表达式是否匹配字符串)。

由于它们是不同的类型,它们不能相等,if条件不会被满足。

+1

根据Python文档['re.match'(https://docs.python.org/2/library/re.html#re.match)将会返回一个['MatchObject'](https://docs.python.org/2/library/re.html#re.MatchObject) – niemmi