2012-10-16 19 views
10

मैं अजगर में प्रोग्रामिंग के लिए नया हूं और इसे करने में मदद की ज़रूरत है।टेक्स्ट फ़ाइल से कई नंबर पढ़ना

12 35 21 
123 12 15 
12 18 89 

मैं उन्हें गणितीय सूत्रों में उपयोग करने के लिए सक्षम होने के लिए प्रत्येक पंक्ति के अलग-अलग संख्या को पढ़ने में सक्षम होने की जरूरत है:

मैं इस तरह कई संख्या के साथ एक पाठ फ़ाइल है।

+0

'[नक्शा (नाव, ln ls.strip()] ' –

उत्तर

9

पायथन में, आप एक फ़ाइल से एक स्ट्रिंग के रूप में एक पंक्ति पढ़ते हैं। इसके बाद आप स्ट्रिंग के साथ काम डेटा प्राप्त करने के लिए कर सकते हैं:

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 

मैं यह सब कदम की एक गुच्छा में किया है, लेकिन आप अक्सर देखेंगे लोग उन्हें गठबंधन:

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

अंत में, गणितीय सूत्र में उनका उपयोग करना भी आसान है।

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

यह पूरी तरह से काम करता है, धन्यवाद, धन्यवाद() फ़ाइल नाम") के लिए .split()) – slayeroffrog

6

यह numpy के समारोह loadtxt कहा जाता है का उपयोग करना है करने के लिए एक और तरीका है: सबसे पहले, एक समारोह बनाने के लिए:

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

अब समारोह बुला अपनी फ़ाइल के माध्यम से पुनरावृति।

import numpy as np 

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

अगर आप अपनी फ़ाइल numbers.txt नाम से काम करना चाहिए

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") 

इस लौटना चाहिए [12, 35, 21, 123, 12, 15, 12, 18, 89] आप के बाद साथ list_variable [intergrer] individuly हर संख्या चुन सकते हैं

0

निम्नलिखित कोड काम करना चाहिए

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

आप कमांड लाइन पर अपने तर्क के रूप में फ़ाइल नाम का उपयोग करना चाहते हैं, तो आप क्या कर सकते हैं निम्नलिखित:

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 

अन्यथा आप ऐसा कर सकते हैं:

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 
संबंधित मुद्दे