从文本文件中读取多个数字

时间:2012-10-16 14:57:35

标签: python text python-3.x numbers

我是python编程的新手,需要帮助。

我有一个包含多个数字的文本文件:

12 35 21
123 12 15
12 18 89

我需要能够读取每行的各个数字才能在数学公式中使用它们。

5 个答案:

答案 0 :(得分:12)

在python中,您从文件中读取一行作为字符串。然后,您可以使用字符串来获取所需的数据:

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)

答案 1 :(得分:6)

另一种方法是使用名为numpy的{​​{1}}函数。

loadtxt

答案 2 :(得分: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]

单独选择每个数字之后

答案 3 :(得分:0)

以下代码应该可以使用

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

答案 4 :(得分: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