Python read text file columnwise
On 12/01/19 1:03 PM, Piet van Oostrum wrote:
> shibashibani at gmail.com writes:
>>> I'm very new in python. I have a file in the format:
>>> 2018-05-31 16:00:00 28.90 81.77 4.3
>>> 2018-05-31 20:32:00 28.17 84.89 4.1
>>> 2018-06-20 04:09:00 27.36 88.01 4.8
>>> 2018-06-20 04:15:00 27.31 87.09 4.7
>>> 2018-06-28 04.07:00 27.87 84.91 5.0
>>> 2018-06-29 00.42:00 32.20 104.61 4.8
>> I would like to read this file in python column-wise.
>> I tried this way but not working ....
>> event_list = open('seismicity_R023E.txt',"r")
>> info_event = read(event_list,'%s %s %f %f %f %f\n');
To the OP:
Python's standard I/O is based around data "streams". Whilst there is a
concept of "lines" and thus an end-of-line character, there is not the
idea of a record, in the sense of fixed-length fields and thus a
defining and distinction between data items based upon position.
Accordingly, whilst the formatting specification of strings and floats
might work for output, there is no equivalent for accepting input data.
Please re-read refs on file, read, readline, etc.
> Why would you think that this would work?
To the PO:
Because in languages/libraries built around fixed-length files this is
how one specifies the composition of fields making up a record - a data
structure which dates back to FORTRAN and Assembler on mainframes and
other magtape-era machines.
Whilst fixed-length records/files are, by definition, less flexible than
the more free-form data input Python accepts, they are more efficient
and faster in situations where the data (format) is entirely consistent
- such as the OP is describing!