Ignore:
Timestamp:
19/02/07 13:34:46 (13 years ago)
Author:
domlowe
Message:

Improved performance of two Nappy functions - readItemsFromUnknownLines and _checkForBlankLines

File:
1 edited

Legend:

Unmodified
Added
Removed
  • nappy/trunk/textParser.py

    r349 r2179  
    1919def readItemFromLine(line, rttype=str): 
    2020    rtitem=pattnNoQuotes.sub("", line.strip()) 
    21     if rttype==int: 
    22         rtitem=int(rtitem) 
    23     elif rttype==float: 
    24         rtitem=float(rtitem)         
     21    if rttype is not str: 
     22        rtitem = rttype(rtitem)    
    2523    return rtitem 
    2624 
     
    2927    if nitems and len(rtitems)!=nitems: 
    3028        raise "Incorrect number of items (%s) found in line: \n'%s'" % (nitems, line) 
    31     if rttype==int: 
    32         rtitems=map(lambda x: int(x), rtitems) 
    33     elif rttype==float: 
    34         rtitems=map(lambda x: float(x), rtitems)         
     29    if rttype is not str: 
     30        rtitems = [rttype(x) for x in rtitems] 
    3531    return rtitems 
    3632 
     
    3935    for line in lines: 
    4036        rtitems=rtitems+[readItemFromLine(line, rttype)] 
    41     if rttype==int: 
    42         rtitems=map(lambda x: int(x), rtitems) 
    43     elif rttype==float: 
    44         rtitems=map(lambda x: float(x), rtitems)             
     37    if rttype is not str: 
     38        rtitems = [rttype(x) for x in rtitems] 
    4539    return rtitems 
    4640 
     
    5347    """ 
    5448    rtitems=[] 
    55     lines=[]     
    56     if type(object)==list: 
    57         while len(rtitems)<nitems: 
    58             nextitem=object[0] 
    59             object=object[1:] 
    60             items=re.split(r"\s+", nextitem.strip()) 
    61             lines.append(items)         
    62             (rtitems, extras)=(rtitems+items[:nitems], items[nitems:]) 
     49    lines=[]         
     50    if type(object) is list:  
     51        nextitem=object[0] 
     52        del object[0] 
     53        while len(rtitems)<nitems:    
     54            #items=re.split(r"\s+", nextitem.strip()) 
     55            items=nextitem.strip().split() 
     56            lines.append(items) 
     57            (rtitems,extras)=(rtitems+items[:nitems],items[nitems:]) 
    6358        if len(extras)>0: 
    6459            raise "Could not split %s lines exactly into required number (%s) of items: \n%s" % (len(lines), nitems, lines) 
    65         if rttype==int: 
    66             rtitems=map(lambda x: int(x), rtitems) 
    67         elif rttype==float: 
    68             rtitems=map(lambda x: float(x), rtitems) 
     60        if rttype is not str: 
     61            rtitems = [rttype(x) for x in rtitems] 
    6962        return (rtitems, object) 
    7063    else: 
     64        lines =[] 
    7165        while len(rtitems)<nitems: 
    72             items=re.split(r"\s+", object.readline().strip()) 
    73             lines.append(items)         
    74             (rtitems, extras)=(rtitems+items[:nitems], items[nitems:]) 
     66            #items=re.split(r"\s+", object.readline().strip()) 
     67            items=object.readline().strip().split() 
     68            lines.append(items) 
     69            (rtitems,extras)=(rtitems+items[:nitems], items[nitems:]) 
    7570        if len(extras)>0: 
    7671            raise "Could not split %s lines exactly into required number (%s) of items: \n%s" % (len(lines), nitems, lines) 
    77         if rttype==int: 
    78             rtitems=map(lambda x: int(x), rtitems) 
    79         elif rttype==float: 
    80             rtitems=map(lambda x: float(x), rtitems)      
     72        if rttype is not str: 
     73            rtitems = [rttype(x) for x in rtitems] 
    8174        return rtitems 
    8275 
Note: See TracChangeset for help on using the changeset viewer.