【问题标题】:Need help in Sorting csv files in python在 python 中对 csv 文件进行排序时需要帮助
【发布时间】:2015-11-27 17:26:51
【问题描述】:

我对脚本非常陌生。目前我正在编写一个脚本来从不同文件中读取数据,然后合并、排序和提取特定数据。

现在我被困在使用我的数据的第 4 列对 csv 文件进行排序。下面是我正在使用的代码

*

ifile = open('one.csv', 'r')
reader = csv.reader(ifile, delimiter=',')
sortedlist = sorted(reader, key=operator.itemgetter(3))
with open("Newfile.csv", "wb") as f:
         fileWriter = csv.writer(f, delimiter=',')
         for row in sortedlist:
             fileWriter.writerow(row)

当我使用第一列对 csv 进行排序时,上面的代码正在工作.....“operator.itemgetter(0)”。

但是当我输入 (3) 或除 0 以外的任何内容时.....它给出的错误如下

IndexError: 列表索引超出范围

我的 csv 文件看起来像

IP_range,Mask,Ad1,Ad2,Ad3
10.0.140.0, 255.255.0.0, 199u, Seattle, Fourth Avenue
10.0.140.1, 255.255.0.0, 193u, Windsor, Popular Avenue

我无法理解这个问题..我尝试了不同的分隔符..但没有运气

【问题讨论】:

  • 您发布的数据不足以重现您的错误,很可能您的 csv 文件中的一个格式不正确或与您需要进行更多调试的其他文件格式不同
  • 你确定csv的分隔符是,并且不止一列吗?
  • 对于示例数据,我假设您转储的 csv 数据中有新行。现在对于给定的数据,排序工作正常。但如果 csv 不正确(例如,只有 2 列而不是 5 列),问题是可重现的。
  • 当 OP 使用帐户 Rakesh 时,为什么我会收到来自 Barun Sharma 的消息?您是否使用多个帐户?
  • 感谢您的回复.....在我删除了许多行并重新运行脚本后它工作正常......正如你所建议的 csv 文件中有问题...... ..实际上它是一个txt文件和一个htm文件的合并文件......我试图从两个文件中收集信息并将它们放在相同的列名下......我的排序问题现在已经解决......看起来像我应该重新合并文件。谢谢 EdChum 和 Barun Sharma

标签: python sorting csv


【解决方案1】:

尝试使用list comprehension 删除格式错误的行

同时在读取文件时使用with 语句。

import csv
import operator
with open('one.csv', 'r') as ifile:
    ireader = [i for i in csv.reader(ifile, delimiter=',') if len(i) >3]  #covert works here
    sortedlist = sorted(ireader, key=operator.itemgetter(3))
    with open("Newfile.csv", "wb") as f:
         fileWriter = csv.writer(f, delimiter=',')
         for row in sortedlist:
             fileWriter.writerow(row)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2019-12-25
    • 1970-01-01
    • 2014-06-29
    • 2015-06-28
    • 2019-11-07
    相关资源
    最近更新 更多