首页 > 解决方案 > 在 python 中使用 recfromtxt 读取百分比

问题描述

我有一个如下所示的 .txt 文件:

0   0,0%    41,3%   22,1%   28,9%
1   0,0%    40,4%   27,4%   37,8%
2   0,0%    42,5%   30,1%   48,5%

我设法导入它的唯一方法是这样的:

d1  = np.recfromtxt(path+file, delimiter = '\t', usecols=(0,1,2,3,4), names= ["h","a","b","c","d"], dtype=(None,'U8','U8','U8','U8'))

其中以下

[(0., '0,0%', '41,3%', '22,1%', '28,9%')
 (1., '0,0%', '40,4%', '27,4%', '37,8%')
 (2., '0,0%', '42,5%', '30,1%', '48,5%')]

为了处理数据,我必须转换我所有的字符串。我确定我误解了一些东西。也就是说,我想得到类似的东西

[(0., 0,0, 41,3, 22,1, 28,9)
 (1., 0,0, 40,4, 27,4, 37,8)
 (2., 0,0, 42,5, 30,1, 48,5)]

如果有人可以提出一种更简单的方法并解释它是如何工作的,我将不胜感激。

标签: python

解决方案


一个相当长的解决方法,因为我无法使用该函数读取数据recfromtxt(如,当我尝试使用示例数据读取时它给了我一个错误):

fin = open("file.txt")
data = fin.readlines()
fin.close()

d = [i.strip().replace(",", ".").replace("%", "") for i in data]
d = [i.split() for i in d]
d = np.array(d)
d = d.astype('float64')

输出如下:

array([[ 0. ,  0. , 41.3, 22.1, 28.9],
       [ 1. ,  0. , 40.4, 27.4, 37.8],
       [ 2. ,  0. , 42.5, 30.1, 48.5]])

推荐阅读