loop through each line in a text file

Q

qtrimble

I'm a python newbie but I do have some basic scripting experience. I
need to take the line starting with "wer" and extract the year and day
of year from that string. I want to be able to add the year and day
of year from the last line having "wer*" to the lines occurring in
between "wer*" lines. Python seems suitable to do this and I'm fairly
certain I can eventually get this to work but I've been hit with a
very short time frame so I'm looking for any generous help. The data
below is just a sample. There are well over 500,000 lines that need
processed.

wer1999001
31.2234 82.2367
37.9535 82.3456
wer1999002
31.2234 82.2367
37.9535 82.3456
 
A

Alf P. Steinbach

* qtrimble:
I'm a python newbie but I do have some basic scripting experience. I
need to take the line starting with "wer" and extract the year and day
of year from that string. I want to be able to add the year and day
of year from the last line having "wer*" to the lines occurring in
between "wer*" lines. Python seems suitable to do this and I'm fairly
certain I can eventually get this to work but I've been hit with a
very short time frame so I'm looking for any generous help. The data
below is just a sample. There are well over 500,000 lines that need
processed.

wer1999001
31.2234 82.2367
37.9535 82.3456
wer1999002
31.2234 82.2367
37.9535 82.3456
>>> line = "wer1999001"
>>> line 'wer1999001'
>>> line[3:3+4] '1999'
>>> line[7:7+3] '001'
>>> _
</example>

Cheers & hth.,

- Alf
 
O

OdarR

I'm a python newbie but I do have some basic scripting experience.  I
need to take the line starting with "wer" and extract the year and day
of year from that string.  I want to be able to add the year and day
of year from the last line having "wer*" to the lines occurring in
between "wer*" lines.  Python seems suitable to do this and I'm fairly
certain I can eventually get this to work but I've been hit with a
very short time frame so I'm looking for any generous help.  The data
below is just a sample.  There are well over 500,000 lines that need
processed.

wer1999001
      31.2234      82.2367
      37.9535      82.3456
wer1999002
      31.2234      82.2367
      37.9535      82.3456

did you try something as a working basis ?

Olivier
 
Q

qtrimble

did you try something as a working basis ?

Olivier

Yes but it's very simple -

fileIN = open(r"C:\testing.txt", "r")

for line in fileIN:
year = line[3:7]
day = line[7:10]
print year, day

This is good since i can get the year and day of year into a variable
but I haven't gotten any further.
 
J

John Posner

fileIN = open(r"C:\testing.txt", "r")

for line in fileIN:
year = line[3:7]
day = line[7:10]
print year, day

This is good since i can get the year and day of year into a variable
but I haven't gotten any further.

That's an excellent start. Here's another hint ...

There are two kinds of lines in your input file:

* lines that begin with "wer"
* all other lines

So you need an if-else section to process the lines in the input file:

if line.startswith("wer"):
# use the contents of *line* to assign values
# to variables *year* and *day*
...
else:
# use the current values of *year* and *day*
# to process the numbers extracted from *line*

Most likely, you'll also need these functions:

* split() -- chop a string into pieces
* int() -- string-to-integer conversion

HTH,
John
 
R

rurpy

did you try something as a working basis ?

Yes but it's very simple -

fileIN = open(r"C:\testing.txt", "r")

for line in fileIN:
    year = line[3:7]
    day = line[7:10]
    print year, day

This is good since i can get the year and day of year into a variable
but I haven't gotten any further.

How about something like (untested):

for line in fileIN:
if line.startswith ("wer"):
year = line[3:7]
day = line[7:10]
else:
print "%s-%s %s" % (year, day, line.strip())

You can adjust the details as needed...
 
Q

qtrimble

Yes but it's very simple -
fileIN = open(r"C:\testing.txt", "r")
for line in fileIN:
    year = line[3:7]
    day = line[7:10]
    print year, day
This is good since i can get the year and day of year into a variable
but I haven't gotten any further.

How about something like (untested):

  for line in fileIN:
       if line.startswith ("wer"):
           year = line[3:7]
           day = line[7:10]
        else:
           print "%s-%s %s" % (year, day, line.strip())

You can adjust the details as needed...

Thanks to all of you for your suggestions.

This is what I have now. It may not be the most efficient or well
written script but it works! Thanks again!

fileIN = open(r"C:\z_paul\ims1999.txt", "r")

for line in fileIN:
if line.startswith("ims"):
year = line[3:7]
day = line[7:10]
newfile = file(r"C:\z_paul\output\ims" + year + day + ".txt",
"wt")
newfile.write("YEAR,DOY,Y_COORD,X_COORD,TYPE\n")
else:
temp = line.replace(' ',',')
temp2 = temp.replace(', ',',')
newfile.write(year + "," + day + temp2)
newfile.close()
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top