【问题标题】:Importing and parsing a TSV file with Python使用 Python 导入和解析 TSV 文件
【发布时间】:2014-10-09 08:55:50
【问题描述】:

好的...所以我正在尝试构建一个 python 脚本,它允许我将 TSV 文件导入矩阵。然后取前三列.. col-1 是天,2 是 minTemp,3 是 maxTemp。我想从 col2 中获取 minTemp 以及相关日期和 maxTemp 以及相关日期。这是来自 NOAA 文件。所以顶部有网站信息等,我想要提取的实际数据从第 9 行的一个选项卡开始。无法弄清楚如何获得相关日期。我也从这个错误中得到了错误。两年没接触Python了,请见谅。

import csv 
inFile = 'weather1.txt'
with open(inFile,'r') as tsv:
    for i in range (8): 
        inFile.next()
    weatherOutput = [line.strip().split('\t') for line in tsv];
    for row in WeatherOutput:
        weatherOutput.append(row);
        print (WeatherOutput)
    day = (col[1])
    maxTemp = (col[2])
    minTemp = (col[3]);
    minimumTemp = min(col[3])
    maximumTemp = max(col[2])
    print (minimumTemp, maximumTemp);

【问题讨论】:

  • 如果您的数据是结构化的,请考虑使用 pandas 库,您可以将数据加载到数据框中,然后计算您需要的所有信息
  • 你为什么使用import,却从不使用csv"errors out the wazoo" 是什么意思(请提供回溯)?你认为col 来自哪里?
  • 这将有助于追溯错误,并且至少可能是您尝试解析的输入文件的相关部分。
  • 我遇到的一些错误包括。 infile.next()"str 对象的属性错误没有 read()。我在解析时也遇到了 EOL 错误。

标签: python


【解决方案1】:

您已经将列表拆分为列表 do zip 以转置列表:

weather = [["monday",22,10],["tuesday",25,9]]

days, maxTemps ,minTemps = zip(*weather)
print (days, maxTemps, minTemps)
('monday', 'tuesday') (22, 25) (10, 9)

索引也以0 而非1 开始,因此如果您尝试访问前三个元素,它将是col[0],col[1] and col[2]

添加到您正在迭代的列表将意味着列表不断增长,因此您将无限循环并且您的代码将永远不会继续:

   for row in WeatherOutput:
        weatherOutput.append(row);
        print (WeatherOutput)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2016-01-24
    • 2022-11-04
    相关资源
    最近更新 更多