web-dev-qa-db-ja.com

テキストファイルから複数の数値を読み取る

私はpythonでのプログラミングに不慣れで、これを行うのに助けが必要です。

次のようないくつかの番号のテキストファイルがあります。

12 35 21
123 12 15
12 18 89

数式で使用できるようにするには、各行の個々の数値を読み取ることができる必要があります。

10
slayeroffrog

Pythonでは、ファイルから1行を文字列として読み取ります。次に、文字列を操作して、必要なデータを取得できます。

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

最後に、数式でそれらを使用することも簡単です。まず、関数を作成します。

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

次に、関数を呼び出してファイルを繰り返し処理します。

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)
12
mgilson

これを行う別の方法は、numpyと呼ばれるloadtxtの関数を使用することです。

import numpy as np

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

コマンドラインで引数としてファイル名を使用する場合は、次の操作を実行できます。

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

list_variable [intergrer]ですべての数値を個別に選択した後、これは[12、35、21、123、12、15、12、18、89]を返す必要があります。

0
mou

次のコードが機能するはずです

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