2016-03-02 42 views
0

在下面的代碼中面對nonetypr對象錯誤 任何人都可以請幫忙嗎?Python re.search不能正常工作

from os import listdir 
from os.path import isfile, join 
import re, os 

featureList = {} 
featureFileNames = {} 

tempList = [f for f in listdir('.') if isfile(join('.', f))] 

for fileName in tempList: 
    fileName = '.' + os.sep + fileName 
    featureFile = open(fileName, 'r') 
    featureInfo = featureFile.readlines(-1) 
    featureFile.close() 
    featureName = re.search(r'.*XYZ : +(\S+\d)',' '.join(featureInfo)).group(1) 
    featureList[featureName]=fileName 

I do have more than one files are in the below format : 
file 1 : 
ABC : 123 
ASD : 1234 
SADF : 2412 
XYZ : 123 

file2: 
ABC : 3234 
ASD : 123323 
SADF : 12345 
XYZ : 1234555 

我無法得到錯誤在哪裏? 有人可以告訴我什麼是錯誤,我該如何解決?

+0

請提供'traceback'。 –

+0

爲什麼在閱讀'featureInfo = featureFile.readlines(-1)'時刪除文本的最後一行' – The6thSense

+0

你想捕捉什麼,你的正則表達式什麼都不匹配,所以它拋出無類型錯誤 – The6thSense

回答

2

在您的代碼示例中,正則表達式無法匹配您提供的文件示例。有XYZ後失蹤的空白:

featureName = re.search(r'.*XYZ : +(\S+\d)',' '.join(featureInfo)).group(1) 

而且避免NoneType錯誤,你應該使用它作爲一個地圖鍵之前測試re.search的結果。