On 02/19/2016 10:14 AM, wrong.addres...@gmail.com wrote:
[snip]

This is precisely reading one character at a time. If not exactly reading one 
character, it is effectively looking at each character to assemble the number. 
Not a good sign. I guess there might be libraries which will help read numbers 
better, but I would expect a good language to be able to handle this basic 
thing for engineers - to read numbers like Fortran and Basic do.

Still, if I have misunderstood something, I will be glad to be corrected. I 
would generally know that the first three numbers will be floating point, the 
next will be something and then the next will be something else, etc. Does that 
help or does one still have to look at each character and determine how to 
place it in a number?

Thanks for your patience. I don't want surprises later on, which is why I am 
asking very stupid questions.

It absolutely does NOT require reading a character at a time! You are reading the data from a text file, which means everything is a string. These strings (or sub-strings) can represent integers, floats, dates, phone numbers or whatever. Your example data implies a free-form style, where it is then necessary to determine the data type for each of these (sub)strings individually. Of course, if your data has a defined fixed format, this is simplified -- but they are still initially strings that have to be converted. String processing in Python is very powerful and versatile.

BTW, it does no good to continue to think strictly in BASIC techniques. Python is a different language with a different approach to attacking problems. If you try to write BASIC (or C or Java or ...) programs in Python syntax you'll just get bad programs. Forget trying to find features in Python that are identical to the features of BASIC. Python requires a different mind-set to use it properly -- just like any other language.

Here is a rather naive somewhat brute-force way to read your example data. I'm using a Python list here to simulate the file reading. (Actually, using read() instead of readline() will also give this list.) Python lists are essentially the same as arrays in other languages, but much more powerful and versatile. Two examples of the differences between arrays and lists are: can use mixed data types, you are not restricted to all the same data type, and the size of lists are dynamic -- they grow or shrink as necessary.

Comments start with a #
Strings in Python can be delimited by single-quotes ('), double-quotes (") or triple-quotes (""" or '''). Triple-quoted strings can be multi-line text. The triple-quote here is used as what Python calls a docstring, which it saves internally for documenting your program.

<code>
#   Define a function to determine the data type a string represents
def chktyp(s):
    """Check string s for int, float or string.  Returns the data and a type 
code"""
    try:
        return int(s), 'int'      #  Try to convert to int, return it if 
successful
    except ValueError:            #  No, it's not an int
        pass                      #  Drop into float test
    try:
        return float(s), 'float'  #  Try to convert to float, return it if 
successful
    except ValueError:            #  No, it's not a float
        return s, 'str'           #  It must be a string

#   Here is your (simulated) data as a list of strings
data = [
    '2 12.657823 0.1823467E-04 114 0',
    '3 4 5 9 11',
    '"Lower"',                    #  Could be left simply as "Lower"
    '278.15']

#   Process the data
for line in data:                 #  For each line of the data
    dat = line.split()            #  Make a list of the sub-strings in the line
    for stng in dat:              #  For each substring
        dt, tp = chktyp(stng)     #  Get the data and the type
        print('{} is a {}'.format(dt, tp))    #  Print this data
</code>

Running this example gives this result:

2 is a int
12.657823 is a float
1.823467e-05 is a float
114 is a int
0 is a int
3 is a int
4 is a int
5 is a int
9 is a int
11 is a int
"Lower" is a str
278.15 is a float

I hope this gives you a slight hint about the Python way of doing things. Yes, of course it's very different from BASIC, but if you can pick up on the Pythonic way of doing things I think you might at least find it useful.

     -=- Larry -=-

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to