将虹膜(.data文件)拆分为列表列表

问题描述 投票:0回答:2

我在编程方面还很陌生,所以如果这个问题太简单了,我会提前道歉,但是我在互联网上到处都看过,我仍然不明白。

我想使用虹膜,显然我首先需要将其拆分。

def ri(filename):
    linelist=list()
    with open (filename) as f:
        for line in f:
            linelist.append(line)
            return linelist
data=ri("iris.data")
print(data)

这是我的初衷,但是我遇到的问题是这段代码给了我一个字符串,但是我需要一个数据点列表。 1鸢尾花的例子是5.7,3.8,1.7,0.3,鸢尾花,但它看起来必须像[[5.7],[3.8],[1.7],[0.3],[1]]。

我搜索了所有内容,但找不到任何内容。

提前感谢

编辑:文件看起来像这样

5.1,3.5,1.4,0.2,鸢尾花

4.9,3.0,1.4,0.2,鸢尾花

4.7,3.2,1.3,0.2,鸢尾花

4.6,3.1,1.5,0.2,鸢尾花

5.0,3.6,1.4,0.2,鸢尾花

5.4,3.9,1.7,0.4,鸢尾花

4.6,3.4,1.4,0.3,鸢尾花

5.0,3.4,1.5,0.2,鸢尾花

我的工作代码是这样:但是显然不是我想要的工作

def read_iris(filename):    
    f=open("iris.data", "r")
        if f.mode == 'r':
            x =f.readlines()
        return x
data = read_iris("iris.data")
print(data)

>> ['5.1,3.5,1.4,0.2,Iris-setosa\n', '4.9,3.0,1.4,0.2,Iris-setosa\n', '4.7,3.2,1.3,0.2,Iris-setosa\n', '4.6,3.1,1.5,0.2,Iris-setosa\n', '5.0,3.6,1.4,0.2,Iris-setosa\n', '5.4,3.9,1.7,0.4,Iris-setosa\n', '4.6,3.4,1.4,0.3,Iris-setosa\n', '5.0,3.4,1.5,0.2,Iris-setosa\n',
python list function
2个回答
0
投票

要获得想要的结果,您可以使用此脚本:

def ri(filename):
    linelist=list()
    with open (filename) as f:
        for line in f:
            row_list = list()
            for element in line.split(','):
                element_list = list()
                if element.isalpha():
                    element_list.append(element)
                    row_list.append(element_list)
                else:
                    element_list.append(float(element))
                    row_list.append(element_list)
            linelist.append(row_list)
    return linelist

data=ri("iris.data")
print(data)

0
投票

您是否考虑过使用pandas?如果使用表格数据,则没有必要手动进行。

import pandas as pd

df = pd.read_csv("iris.data", header=None)

print(df[df.columns[:-1]].values)

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]
 [5.4 3.9 1.7 0.4]
 [4.6 3.4 1.4 0.3]
 [5.  3.4 1.5 0.2]]
© www.soinside.com 2019 - 2024. All rights reserved.