只返回一行。但是我有1000多行。我怎样才能解决这个问题?

2024-05-06 06:40:16 发布

您现在位置:Python中文网/ 问答频道 /正文

***

def reading_file(rf):
      f = open(rf,'r')
      print('Rentable Houses İnformation:')
      for line in f.readlines():
          datas = line.split(',')
          c = datas[1]
          a = datas[2]
          r = datas[3]
          hoa = datas[9]
          ra = datas[10]
          pt = datas[11]
          fi = datas[12] 
          house_info = np.array((c,a,r,hoa,ra,pt,fi))
          print(*house_info,sep=',')
    f.close()

** 我试图定义一个函数,该函数读取一个文件,然后将所有数据分配到一个数组中。但是,我找不到return的用法。由于不使用return,此函数还打印“None”。因此,我的程序不能有效地工作。我怎样才能解决这个问题


1条回答
网友
1楼 · 发布于 2024-05-06 06:40:16

解决方案

可以使用numpy.genfromtxt()首先将数据作为数组加载,然后通过指定column_indices仅选择所需的列

import numpy as np

column_indices = [1,2,3,9,10,11,12]
# fname is the reading-filename.
a = np.genfromtxt(fname, delimiter=',')[:,column_indices]

但是,如果您只想从自定义定义的函数返回结果,则需要添加如下返回语句:

def reading_file(rf):
    # define an empty list
    house_info = []
    # your code here
    # ...
    # for line in f.readlines():
        ...
        # append to the list for every pass in the loop
        house_info += np.array((c,a,r,hoa,ra,pt,fi))
    # list-to-array conversion
    house_info = np.array(house_info).reshape((len(house_info), 6))
    return house_info 

相关问题 更多 >