python - 将给定文本更改为列表列表

标签 python python-3.x numpy

我在给定文件中有以下文本:

1234,A,7.99,10.3,12.8,101,0.11843,0.27276,0.30101  
87635,B,19.69,21.25,130,1203,0.1096,0.1599,0.1974

首先,我想去掉前面的123487635,并且我还想把A改为整数"1"B 转换为整数 "0"

这是我的代码:

def convert(file):
    data = open(file, 'r')
    list1 = []
    for line in data:
        line_data = line.strip().split(',')
        if line_data[0] == "B":
            line_data[0] = 0
        else:
            line_data[0] = 1
        for i in range(len(line)):
             datalist.append(line)
    list1 = np.array(list1), float
    data.close()
    return list1

这是我想要的输出:

[[1234,A,7.99,10.3,12.8,101,0.11843,0.27276,0.30101], [87635,B,19.69,21.25,130,1203,0.1096,0.1599,0.1974]]

我当前获得的输出是字符串的列表,而不是列表的列表。

最佳答案

您将获得一个 stringslist ,因为您将附加到列表中 -

datalist.append(line)

这会附加原始的 line ,而不是更改的 line_data 。此外,line_data 中的所有元素仍然是字符串(第一个元素除外),因为您永远不会将它们转换为 int。

这里最简单的方法是使用 csv 模块,将文件解析为 csv,然后从返回的每行中弹出第一个元素,然后更改第二个元素(现在是删除后的第一个元素,如你所愿)。示例-

def convert(file):
    import csv
    lst = []
    with open('<filename>','r') as f:
        reader = csv.reader(f)
        for row in reader:
                row.pop(0)
                if row[0] == 'B':
                        row[0] = 0
                else:
                        row[0] = 1
                lst.append(list(map(float, row)))
    return lst
<小时/>

示例/演示 -

我的 a.csv -

1234,A,7.99,10.3,12.8,101,0.11843,0.27276,0.30101  
87635,B,19.69,21.25,130,1203,0.1096,0.1599,0.1974

代码和结果 -

>>> import csv
>>> with open('a.csv','r') as f:
...     reader = csv.reader(f)
...     lst = []
...     for row in reader:
...             row.pop(0)
...             if row[0] == 'B':
...                     row[0] = 0
...             else:
...                     row[0] = 1
...             lst.append(list(map(float, row)))
...
'1234'
'87635'
>>> lst
[[1.0, 7.99, 10.3, 12.8, 101.0, 0.11843, 0.27276, 0.30101], [0.0, 19.69, 21.25, 130.0, 1203.0, 0.1096, 0.1599, 0.1974]]

关于python - 将给定文本更改为列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31869790/

相关文章:

python - Pandas 多索引系列处理

python - 如何使我修改后的 pandas/numpy .where 函数适应不同大小的列表参数?

performance - Python GUI (tkinter.ttk) 应用程序速度慢

python - Qt 和 opencv 应用程序无法在虚拟环境中运行

python - 使用用户指定的全局聚类系数高效生成随机图

python - Numpy 导入抛出 AttributeError : 'module' object has no attribute 'core'

python - 使用 Python 终止 Linux 进程 - ffmpeg 终止到 Youtube 的实时流

python - Pandas :逐行比较数据框中的所有值

python - 如何使用 python 组合 df 的行?

python - Pandas: reshape 数据框