首页 > 解决方案 > 将 CSV 条目转换为元组列表而不更改数据类型

问题描述

我的 CSV 条目如下:

1500, 'data', '10.10.10.1', 2.0, 1
1501, 'header', '10.10.10.14', 2.1, 0
...

我想以这种方式将它加载到我的程序中:

[(1500, 'data', '10.10.10.1', 2.0, 1), (1501, 'header', '10.10.10.14', 2.1, 0), ...]

我正在尝试对数百万条记录执行此操作,因此拆分每一行并转换为所需的数据类型似乎很乏味。

有什么建议吗?

我尝试使用 csv 库,但这只是将整个内容转换为字符串。Pandas 也没有将其作为元组加载。

标签: pythonpandascsv

解决方案


CSV 库没有进行任何转换,文件是一个字符串。由脚本根据需要转换每个值。例如:

import csv

with open("input.csv", "r", newline="") as f_in:
    csv_in = csv.reader(f_in, quotechar="'", skipinitialspace=True)  # Single quote rather than default double quote
    data = [(int(row[0]), *row[1:3], float(row[3]), int(row[4])) for row in csv_in]

    print(data)

这将显示您的元组如下:

[(1500, 'data', '10.10.10.1', 2.0, 1), (1501, 'header', '10.10.10.14', 2.1, 0)]

推荐阅读