【问题标题】:How to define a function that will print an entire column?如何定义将打印整列的函数?
【发布时间】:2021-03-08 18:06:58
【问题描述】:

我正在尝试创建一个函数 get_data,它接受文件名和列号,并返回列中找到的数字(作为浮点数)。

这是我的代码。

def get_data(filename, columnnumber):
    open(filename, 'r').readlines()
    columnnumber = []
    return columnnumber

 
wind = get_data('blizzard.txt',0)
print(wind)

输出应该是这样的

wind = get_data('blizzard.txt',0)
print(wind)
 
28
29.2
15.1
30.1
32.1
31.3
32.5
33.1
34.1
33.3
32.1
33.8
29.1
30.9
31.5
25.5
26
27
25.1
33.1
33.4
32.1
29.4
30

但我得到的只是一行值或什么都没有。

【问题讨论】:

  • 您的 .txt 文件的格式是什么?是csv文件吗?
  • .txt 文件@rauberdaniel
  • 但是它的结构是什么?那里的“列”是如何定义的?
  • 有 2 列,每列代表一个不同的变量。第一列是风速,第二列是能见度。我只需要打印出两列值@rauberdaniel

标签: python arrays function abstract


【解决方案1】:

如果它只是一个基本的 .txt 文件,其中的值由一些没有标题或任何内容的分隔符分隔,那么您需要做的就是

def get_data(filename, columnnumber, delimiter=','):
    with open(filename, 'r') as file:
        data = file.readlines()
    retrieved_data = [x.strip().split(delimiter)[columnnumber] for x in data]
    return retrieved_data

根据 .txt 文件中数据的定义方式,根据需要修改分隔符。例如:此代码适用于定义为 13,34 的行

第 2 行和第 3 行:with open 行用于确保您的文件始终干净地关闭。以这种方式打开文件是一种很好的做法。
第 4 行:考虑从存储在 x 中的文件中读取的行 '13,34\n'。 x.strip() 删除了换行符 \n,所以我们留下了 '13,34' 并且 split 函数拆分为 ',' 字符,所以它产生 list_temp = ['13', '34']。然后你使用列表索引来提取值所以 list_temp[0] 或 list_temp[1]。 for x in data 部分只是将上述解释应用于读入数据列表变量的每一行

为了便于理解,下面的代码将产生相同的结果:

def get_data(filename, columnnumber, delimiter=','):
    with open(filename, 'r') as file:
        data = file.readlines()
    retrieved_data = []
    for line in data:
        line = line.strip()
        row_vals = line.split(delimiter)
        col_val = row_vals[columnnumber]
        retrieved_data.append(col_val)
    return retrieved_data

【讨论】:

  • 你能解释一下第 2 行到第 5 行吗?为什么必须使用 with 函数? [x.split(delimiter)[columnnumber] for x in data] 是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
  • 2022-07-26
相关资源
最近更新 更多