2012-10-16 25 views
10

Ich bin neu in der Programmierung in Python und brauche Hilfe dabei.Lesen von mehreren Zahlen aus einer Textdatei

Ich habe eine Textdatei mit mehreren Zahlen wie folgt aus:

12 35 21 
123 12 15 
12 18 89 

Ich muss in der Lage sein können, die einzelnen Nummern jeder Zeile lesen, sie in mathematische Formeln zu verwenden.

+0

'[Karte (float, ln .split()) für ln in open ("filename") wenn ln.strip()] ' –

Antwort

9

In Python lesen Sie eine Zeile aus einer Datei als Zeichenfolge. Sie können dann mit der Zeichenfolge arbeiten, um die Daten zu erhalten, die Sie brauchen:

with open("datafile") as f: 
    for line in f: #Line is a string 
     #split the string on whitespace, return a list of numbers 
     # (as strings) 
     numbers_str = line.split() 
     #convert numbers to floats 
     numbers_float = [float(x) for x in numbers_str] #map(float,numbers_str) works too 

ich alles in einem Bündel von Schritten getan haben, aber Sie werden kombinieren Menschen sehen oft sie:

with open('datafile') as f: 
    for line in f: 
     numbers_float = map(float, line.split()) 
     #work with numbers_float here 

Schließlich ist es auch einfach, sie in einer mathematischen Formel zu verwenden. Erstellen Sie zunächst eine Funktion:

def function(x,y,z): 
    return x+y+z 

nun durch Ihre Datei iterieren Aufruf der Funktion:

with open('datafile') as f: 
    for line in f: 
     numbers_float = map(float, line.split()) 
     print function(numbers_float[0],numbers_float[1],numbers_float[2]) 
     #shorthand: print function(*numbers_float) 
+0

das hat perfekt funktioniert, danke – slayeroffrog

6

Ein anderer Weg, es zu tun ist durch die Verwendung numpy ‚s-Funktion aufgerufen loadtxt.

import numpy as np 

data = np.loadtxt("datafile") 
first_row = data[:,0] 
second_row = data[:,1] 
0

Dies sollte funktionieren, wenn Sie Ihre Datei numbers.txt

nennen
def get_numbers_from_file(file_name): 
    file = open(file_name, "r") 
    strnumbers = file.read().split() 
    return map(int, strnumbers) 


print get_numbers_from_file("numbers.txt") 

dies muss zurückkehren [12, 35, 21, 123, 12, 15, 12, 18, 89] nach können wählen, sollte individuly alle Zahlen mit list_variable [intergrer]

0

Der folgende Code

arbeiten
f = open('somefile.txt','r') 
arrayList = [] 
for line in f.readlines(): 
    arrayList.extend(line.split()) 
f.close() 
0

Wenn Sie den Dateinamen als Argument in der Befehlszeile verwenden möchten, dann können Sie wie folgt vorgehen:

from sys import argv 

    input_file = argv[1] 
    with open(input_file,"r") as input_data: 
     A= [map(int,num.split()) for num in input_data.readlines()] 

    print A #read out your imported data 

sonst können Sie dies tun:

from os.path import dirname 

    with open(dirname(__file__) + '/filename.txt') as input_data: 
     A= [map(int,num.split()) for num in input_data.readlines()] 

    print A