【问题标题】:How do I format a csv file (such as omitting first row and column) without modules?如何在没有模块的情况下格式化 csv 文件(例如省略第一行和第一列)?
【发布时间】:2020-01-18 01:46:29
【问题描述】:

我已经导入了一个 csv 文件,并希望通过删除第一行和前两列来格式化它,这样我就可以对数据执行计算。我还需要在列表列表中显示 csv 值并转换为浮点数。

我找不到任何不涉及使用模块(例如 import csv 或 panda)的帮助。如果没有模块,我将如何做到这一点?

这就是我目前所拥有的一切

for i in inFile:
    listRows = i.strip().split(",") # Converts to list

在列表列表中显示我的数据,但如果不使用模块,我不知道下一步该做什么。

【问题讨论】:

  • 你为什么要这样做? CSV 解析是困难的,不要重新发明它
  • 尝试使用 pandas 的 read_csv
  • 你能告诉我们一些你想要的数据和输出吗?

标签: python python-3.x csv


【解决方案1】:

就像@Christian Sauer 提到的,为什么要重新发明。使用 CSV 包更容易。 但如果你坚持,你可以试试下面的东西

>>> d = [[1,2,3], [4,5,6], [7,8,9]]
>>> d
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> [x[1:] for x in d[1:]]
[[5, 6], [8, 9]]

【讨论】:

    【解决方案2】:

    Pandas 是一款重量级的软件,但 csv 模块包含在 Python 标准库中,所以您真的应该想知道为什么不应该使用它。

    但是可以手动解析 csv 文件,前提是它的格式很简单,没有像多行字段这样的极端情况。

    您的示例数据可以解析为:

    with open(csvfile) as fd:
        _ = next(fd)   # skip first line
        # parse what remains as float skipping first field
        lst = [[float(i) if i.strip() != '' else None for i in line.split(',')[1:]]
            for line in fd]
    

    【讨论】:

    • @Electric_Sheep01:应该感谢i.strip() != '' else None,但尚未经过测试。
    猜你喜欢
    • 2013-10-09
    • 2013-01-09
    • 2021-01-12
    • 2010-10-08
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多