将数据从文件输入到元组

时间:2015-09-02 11:02:36

标签: python csv

我正在学习python,并且一项任务要求我们将csv文件中的数据输入到元组中,以便我们可以计算出数据的均值介质和模式。 如果不使用csv模块,最好的方法是什么。 到目前为止我已经

    with open(fileInput, 'r') as f:
    temps = []
    for line in f:
        temps.append((line.split(':'. 1)
        print (temps)

这是通过查看这里的其他问题并尝试拼凑一些东西,但我已经碰壁了。

数据是这样的一堆温度: Sydney, 23.6, 34.2, 23.4, 34.0, 32.1, 25.6, 25.5,

将它变成元组后,如何访问数据以找出我需要的东西。

我的代码现在看起来像这样

with open(fileInput, 'r') as f:
    heights = []
    for line in f:
        line = line.split()
        numbers = line.split(',')
        heights.append((numbers[0], numbers[1:]))

    print (heights)

现在,在计算平均值等时,我如何在方程式中使用这些列表/元组?

2 个答案:

答案 0 :(得分:0)

这看起来像是一个家庭作业问题,所以我不会给你完整的解决方案,但这应该足以让你开始。

首先,这是一个基于问题中的行的小型测试数据文件。如果它包含一些像这样的测试数据,你的问题会更好,因为这样可以让人们更容易测试你的代码及其答案

<强> temps.txt

Sydney, 23.6, 34.2, 23.4, 34.0, 32.1, 25.6, 25.5,
Melbourne, 13.6, 24.2, 13.4, 24.0, 22.1, 15.6, 15.5,
Darwin, 33.6, 44.2, 33.4, 44.0, 42.1, 35.6, 35.5,

该计划

filename = 'temps.txt'

all_temps = []

with open(filename, 'r') as f:
    for line in f:
        line = [s.strip() for s in line.split(',')]
        city = line[0]
        temps = [float(s) for s in line[1:] if s]
        all_temps.append((city, temps))

for city, temps in all_temps:
    print('city:{0}, temps:{1}'.format(city, temps))

<强>输出

city:Sydney, temps:[23.600000000000001, 34.200000000000003, 23.399999999999999, 34.0, 32.100000000000001, 25.600000000000001, 25.5]
city:Melbourne, temps:[13.6, 24.199999999999999, 13.4, 24.0, 22.100000000000001, 15.6, 15.5]
city:Darwin, temps:[33.600000000000001, 44.200000000000003, 33.399999999999999, 44.0, 42.100000000000001, 35.600000000000001, 35.5]

这一行:

line = [s.strip() for s in line.split(',')]

从逗号上的文件中分割行,将结果保存在列表中,然后我们扫描此列表中的字符串,从每个字符串中删除任何空格(空格,制表符,换行符等),将它们累积到一个列表中。

这一行:

temps = [float(s) for s in line[1:] if s]

从温度值创建一个新列表,将字符串转换为浮点数,这样我们就可以对它们进行算术运算(例如计算均值),因此我们可以用数字对它们进行排序(这对于找到中位数和模式)。

答案 1 :(得分:0)

既然你提到你正在学习Python,我建议你在解决问题之前先学习以下内容:

  1. Python中的列表和元组
  2. 对列表和元组的操作
  3. 字符串操作
  4. list comprehension
  5. http://learnpythonthehardway.org/对于初学者来说是一个很好的资源。

    然后你可以像这样构建元组列表:

    [
      ('place1', [t11, t12, t13] ),
      ('place2', [t21, t22, t23] )
    ]
    

    地名可以是字符串。将温度转换为浮点数可以进一步简化计算。

    要计算平均值,中位数,模式等,可以使用列表理解。