Ask Your Question

Revision history [back]

First, you can put all your lines into a list:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = f.readlines()

So, then L is a list ot lines of the file

sage: L
['2.14\n', '3.15\n', '7.8 \n']

As you can see, the entries are strings, with maybe spaces and newlines at the end. You can clean such a strin with the strip() method:

sage: [l.strip() for l in L]
['2.14', '3.15', '7.8']

But you want Sage floating point numbers, not strings representing them, so you can do:

sage: [RDF(l.strip()) for l in L]
[2.14, 3.15, 7.8]

If you want to summarize this, you can do:

sage: with open('/tmp/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f.readlines()]

sage: L
[2.14, 3.15, 7.8]

First, you can put all your lines into a Python list:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = f.readlines()

So, then L is a list ot lines of the filefile:

sage: L
['2.14\n', '3.15\n', '7.8 \n']

As you can see, the entries are strings, with maybe spaces and newlines at the end. You can clean such a strin string with the strip() method:

sage: [l.strip() for l in L]
['2.14', '3.15', '7.8']

But you want Sage floating point numbers, not strings representing them, so you can do:transform the string into elements of `RDF the real double field:

sage: [RDF(l.strip()) for l in L]
[2.14, 3.15, 7.8]

If you want to summarize this, you can directly do:

sage: with open('/tmp/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f.readlines()]

sage: L
[2.14, 3.15, 7.8]

First, you can put all your lines into a Python list:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = f.readlines()

So, L is a list ot lines of the file:

sage: L
['2.14\n', '3.15\n', '7.8 \n']

As you can see, the entries are strings, with maybe spaces and newlines at the end. You can clean such a string with the strip() method:

sage: [l.strip() for l in L]
['2.14', '3.15', '7.8']

But you want Sage floating point numbers, not strings representing them, so you can transform the string into elements of `RDF RDF, the real double field:

sage: [RDF(l.strip()) for l in L]
[2.14, 3.15, 7.8]

If you want to summarize this, you can directly do:

sage: with open('/tmp/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f.readlines()]

sage: L
[2.14, 3.15, 7.8]

First, you can put all your lines into a Python list:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = f.readlines()

So, L is a list ot lines of the file:

sage: L
['2.14\n', '3.15\n', '7.8 \n']

As you can see, the entries are strings, with maybe spaces and newlines at the end. You can clean such a string with the strip() method:

sage: [l.strip() for l in L]
['2.14', '3.15', '7.8']

But you want Sage floating point numbers, not strings representing them, so you can transform the string into elements of RDF, the real double field:

sage: [RDF(l.strip()) for l in L]
[2.14, 3.15, 7.8]

If you want to summarize this, you can directly do:

sage: with open('/tmp/file.txt', open('/path/to/your/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f.readlines()]

sage: L
[2.14, 3.15, 7.8]

First, you can put all your lines into a Python list:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = f.readlines()

So, L is a list ot lines of the file:

sage: L
['2.14\n', '3.15\n', '7.8 \n']

As you can see, the entries are strings, with maybe spaces and newlines at the end. You can clean such a string with the strip() method:

sage: [l.strip() for l in L]
['2.14', '3.15', '7.8']

But you want Sage floating point numbers, not strings representing them, so you can transform the string into elements of RDF, the real double field:

sage: [RDF(l.strip()) for l in L]
[2.14, 3.15, 7.8]

If you want to summarize this, you can directly do:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f.readlines()]

sage: L
[2.14, 3.15, 7.8]

EDIT: we can get the best of our answer and the one of @niles as follows:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f]

First, you can put all your lines into a Python list:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = f.readlines()

So, L is a list ot lines of the file:

sage: L
['2.14\n', '3.15\n', '7.8 \n']

As you can see, the entries are strings, with maybe spaces and newlines at the end. You can clean such a string with the strip() method:

sage: [l.strip() for l in L]
['2.14', '3.15', '7.8']

But you want Sage floating point numbers, not strings representing them, so you can transform the string into elements of RDF, the real double field:

sage: [RDF(l.strip()) for l in L]
[2.14, 3.15, 7.8]

If you want to summarize this, you can directly do:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f.readlines()]

sage: L
[2.14, 3.15, 7.8]

EDITUPDATE: we can get the best of our this answer and the one of @niles as follows:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f]

First, you can put all your lines into a Python list:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = f.readlines()

So, L is a list ot lines of the file:

sage: L
['2.14\n', '3.15\n', '7.8 \n']

As you can see, the entries are strings, with maybe spaces and newlines at the end. You can clean such a string with the strip() method:

sage: [l.strip() for l in L]
['2.14', '3.15', '7.8']

But you want Sage floating point numbers, not strings representing them, so you can transform the string into elements of RDF, the real double field:

sage: [RDF(l.strip()) for l in L]
[2.14, 3.15, 7.8]

If you want to summarize this, you can directly do:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f.readlines()]

sage: L
[2.14, 3.15, 7.8]

UPDATE: we can get the best of this answer and the one of @niles @nbruin as follows:

sage: with open('/path/to/your/file.txt', 'r') as f:
....:     L = [RDF(l.strip()) for l in f]