使用Python从文本文件中获取值

时间:2016-09-26 18:58:16

标签: python text-files

我在文本文件中有一些数据组织如下:

26.11.2014  154601  26      53.07
16.12.2014  155001  25.2    52.1

第一列是日期,第二列是公里,第三列是以升为单位,最后一列是波兰兹罗提的成本。我正在尝试用加油统计数据创建我的个人程序。这是我将新数据保存到文本文件的代码:

def add_petrol_refueling(date, km, petrol_cost, petrol_volume):

    plik = open('paliwo/benzyna.txt', 'a')
    plik.write(date + '\t' + km + '\t' + petrol_cost + '\t' + petrol_volume)
    plik.write('\n')
    plik.close()

    return True

我使用以下方式从用户处获取数据:

print add_petrol_refueling(raw_input("Refueling date [dd:mm:rrrr]: "),
                    raw_input("Kilometers on car screen [km]: "),
                    raw_input("Refueling cost [zł]: "),
                    raw_input("Refueling volume [l]: "))

我的问题是如何从文本文件中获取数据以进行某些操作以及稍后显示一些统计数据,如平均油耗,平均成本,何时我可以承担下一次加油等等。

1 个答案:

答案 0 :(得分:0)

以下方法应该有助于您开始从文本文件中获取数据。它首先读取benzyna.txt文件的每一行,删除尾随换行符并根据\t拆分它。这将创建一个data列表,其中包含2行,每行包含4个字符串。接下来它遍历每一行并将字符串中的最后三个条目转换为浮点数,以便您可以对它们进行计算:

with open('benzyna.txt') as f_input:
    data = [row.strip().split('\t') for row in f_input]
    data = [[rdate, float(km), float(petrol_cost), float(petrol_vol)] for rdate, km, petrol_cost, petrol_vol in data]

print data 

这会显示:

[['26.11.2014', 154601.0, 26.0, 53.07], ['16.12.2014', 155001.0, 25.2, 52.1]]

或者,以下方法也会给出相同的结果:

data = []

with open('benzyna.txt') as f_input:
    for row in f_input:
        rdate, km, petrol_cost, petrol_vol = row.strip().split('\t')
        data.append([rdate, float(km), float(petrol_cost), float(petrol_vol)])

print data