[Python] python regex error: NameError: name 're' is not defined

Discussão em 'Python' iniciado por Stack, Março 4, 2025.

  1. Stack

    Stack Membro Participativo

    I have some code that reads an infofile and extracts information using python's regex and writes it into a new file. When I test this portion of the code individually in its own script, it works perfectly. However when I add it to the rest of my code, I get this error:

    NameError: name 're' is not defined


    Below is my entire code. The regex portion is obvious (all the re.search commands):

    import glob
    import subprocess
    import os
    import datetime
    import matplotlib.pyplot as plt
    import csv
    import re
    import ntpath

    x = open('data.txt', 'w')
    m = open('graphing_data.txt', 'w')

    ckopuspath= '/Volumes/DAVIS/sfit-ckopus/ckopus'
    command_init = 'sfit4Layer0.py -bv5 -fh'

    subprocess.call(command_init.split(), shell=False)


    with open('/Volumes/DAVIS/calpy_em27_neu/spectra_out_demo/info.txt', 'rt') as infofile: # the info.txt file created by CALPY
    for count, line in enumerate(infofile):
    with open('\\_spec_final.t15', 'w') as t:
    lat = re.search('Latitude of location:\s*([^;]+)', line, re.IGNORECASE).group(0)
    lat = lat.split()
    lat = lat[3]
    lat = float(lat)

    lon = re.search('Longitude of location:\s*([^;]+)', line, re.IGNORECASE).group(0)
    lon = lon.split()
    lon = lon[3]
    lon = float(lon)

    date = re.search('Time of measurement \(UTC\): ([^;]+)', line).group(0)
    date = date.split()

    yeardate = date[4]
    yeardate = yeardate.split('-')
    year = int(yeardate[0])
    month = int(yeardate[1])
    day = int(yeardate[2])

    time = date[5]
    time = time.split(':')
    hour = int(time[0])
    minute = int(time[1])
    second = float(time[2])

    dur = re.search('Duration of measurement \[s\]: ([^;]+)', line).group(0)
    dur = dur.split()
    dur = float(dur[4])

    numpoints = re.search('Number of values of one scan:\s*([^;]+)', line, re.IGNORECASE).group(0)
    numpoints = numpoints.split()
    numpoints = float(numpoints[6])

    fov = re.search('semi FOV \[rad\] :\s*([^;]+)', line, re.IGNORECASE).group(0)
    fov = fov.split()
    fov = fov[3]
    fov = float(fov[1:])

    sza = re.search('sun Azimuth \[deg\]:\s*([^;]+)', line, re.IGNORECASE).group(0)
    sza = sza.split()
    sza = float(sza[3])

    snr = 0.0000
    roe = 6396.2
    res = 0.5000

    lowwav = re.search('first wavenumber:\s*([^;]+)', line, re.IGNORECASE).group(0)
    lowwav = lowwav.split()
    lowwav = float(lowwav[2])

    highwav = re.search('last wavenumber:\s*([^;]+)', line, re.IGNORECASE).group(0)
    highwav = highwav.split()
    highwav = float(highwav[2])

    spacebw = (highwav - lowwav)/ numpoints


    d = datetime.datetime(year, month, day, hour, minute, second)
    t.write('{:>12.5f}{:>12.5f}{:>12.5f}{:>12.5f}{:>8.1f}'.format(sza,roe,lat,lon,snr)) # line 1
    t.write("\n")
    t.write('{:>10d}{:>5d}{:>5d}{:>5d}{:>5d}{:>5d}'.format(year,month,day,hour,minute,second)) # line 2
    t.write("\n")
    t.write( ('{:%Y/%m/%d %H:%M:%S}'.format(d)) + "UT Solar Azimuth:" + ('{:>6.3f}'.format(sza)) + " Resolution:" + ('{:>6.4f}'.format(res)) + " Duration:" + ('{:>6.2f}'.format(dur))) # line 3
    t.write("\n")
    t.write('{:>21.13f}{:>26.13f}{:>24.17e}{:>12f}'.format(lowwav,highwav,spacebw,numpoints)) # line 4
    t.write("\n")

    calpy_path = '/Volumes/DAVIS/calpy_em27_neu/spectra_out_demo/140803/*' # the CALPY output files!
    files1 = glob.glob(calpy_path)
    with open(files1[count], 'r') as g:
    for line in g:
    wave_no, intensity = [float(item) for item in line.split()]
    if lowwav <= wave_no <= highwav:
    t.write(str(intensity) + '\n')

    ##########################

    subprocess.call(['sfit4Layer0.py', '-bv5', '-fs'],shell=False) #I think this writes the summary file

    # this retrieves info from summary and outputs it into data.txt (for readability)
    # and graphing_data.txt (for graphing)
    road = '/Volumes/DAVIS/calpy_em27_neu/spectra_out_demo/sfit4_trial' # path to summary file that is produced - not sure where this is usually*
    for infile in glob.glob(os.path.join(road, 'summary*')):
    lines = open(infile, 'r').readlines()
    #extract info from summary
    x.write('{0} {1} {2} {3} {4}'.format(fitrms, chi2, dofsall, dofstrg, iter))
    x.write('\n')

    x.close()
    m.close()

    Continue reading...

Compartilhe esta Página