How to fix invalid syntax else error?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Karen Rosen
    New Member
    • Feb 2011
    • 2

    How to fix invalid syntax else error?

    This is the first time I am attempting this - someone was kind enough to help me with my previous error and told me to add print statements before the error which I did the error is now invalid syntax else: on line 130
    Code:
    class BadLine(Exception):
        pass
    
    def isblank(item):
        return len(item) == 0 or item.isspace()
    
    def triad(key,data):
        try:
            assert key in fields
        except:
            print "key %s not found" %key
            raise ValueError,key
    print data
    print fields2
    print key
    
    item = data[fields2[key]]
    if key in noblanks:
            item = item.replace(" ","")
    if key.startswith("_"):
            key = key.replace("_","")    # hack for double column names
    if isblank(item):
            if defaults:
                if key in defaults.keys():
                    return  "<%s>"%key+defaults[key]+"</%s>"%key
                else:
                    return  "<%s>"%key+"(inconnu)</%s>"%key
                else:
                print line
                raise BadLine
                    return "<%s>"%key+item+"</%s>"%key
    
    defaults = {"NAS":"000000000","A_DateNaissance":"1/1/20","B1_NbJoursGarde":"0"}
    noblanks = ["NAS","CodePostal"]
    
    
    filename = "KR.tsv"
    outname = "KR5.xml"
    
    outfile = file(outname,"w")
    
    data = [item.strip().split("\t") for item in file(filename).readlines()]
    fields = data[0]
    fields2 = dict([(item[1],item[0]) for item in enumerate(fields)])
    
    # hack for double column names
    fields2["_Prenom"]=4
    fields2["_NomFamille"]=3
    
    fields += "_Prenom _NomFamille".split()
    # end hack for double column names
    
    print fields2
    
    outfile.write(prefix)
                
    for line in data[1:]:
        if not [item for item in line if (not isblank(item))]:
            break     # TSV file ends with many blank lines; exit and clean up on first one
        try:
            record = ["\n\n<R>"]
    
            record.append(triad("Annee",line))
            record.append(triad("NoReleve",line))
    
            record.append("<Payeur>")
    
            record.append(triad("NAS",line))
            record.append(triad("_NomFamille",line))
            record.append(triad("_Prenom",line))
    
            record.append("<Adresse>")
            record.append(triad("Ligne1",line))
            record.append(triad("Ville",line))
            record.append(triad("Province",line))        
            record.append(triad("CodePostal",line))
            record.append("</Adresse>")
    
            record.append("</Payeur>")
    
            record.append("<Enfant>")
    
            record.append(triad("NomFamille",line))
            record.append(triad("Prenom",line))
            record.append(triad("A_DateNaissance",line))
    
            record.append("<CaseB>")
            record.append(triad("B1_NbJoursGarde",line))
            record.append("</CaseB>")
    
            record.append("<Montants>")
            record.append(triad("C_FraisPayes",line))
            record.append("</Montants>")
            
            record.append("</Enfant>")
    
            record.append("</R>") 
            record = "\n".join(record)
            outfile.write(record)
        except BadLine:
            pass
            
    
    outfile.write(suffix)
    outfile.close()
  • bvdet
    Recognized Expert Specialist
    • Oct 2006
    • 2851

    #2
    This if/else block is invalid:
    Code:
                if key in defaults.keys():
                    return  "<%s>"%key+defaults[key]+"</%s>"%key
                else:
                    return  "<%s>"%key+"(inconnu)</%s>"%key
                else:
                print line
    Can you see it?

    Comment

    Working...