【问题标题】:How to Sort a Column in an Excel sheet如何对 Excel 工作表中的列进行排序
【发布时间】:2015-07-01 03:49:19
【问题描述】:

所以我了解了排序在 Python 中的工作原理。如果我把...

a = (["alpha2A", "hotel2A", "bravo2C", "alpha2B", "tango3B", "alpha3A", "zulu.A1", "foxtrot8F", "zulu.B1"]
a.sort()
print a

我会得到...

'alpha2A', 'alpha2B', 'alpha3A', 'bravo2C', 'foxtrot8F', 'hotel2A',  'tango3B', 'zulu.A1', 'zulu.B1']

但是,我想对 Excel 工作表中的列进行排序,所以我尝试了...

isv = open("case_name.csv", "w+")
a = (["case_name.csv"[2]])
a.sort()
print a

得到了回报……

['s']

我知道它正在返回文件名中的第三个字母,但我如何对其进行排序并返回 Excel 工作表的整个列?

更新:新代码

import csv
import operator

with open('case_name.csv') as infile:
    data = list(csv.reader(infile, dialect=csv.excel_tab))

data.sort(key=operator.itemgetter(2))

with open('case_name_sorted.csv', 'w') as outfile:
    writer = csv.writer(outfile, dialect='excel')
    writer.writerows(data)

print(sum(1 for row in data if len(row) < 3))

然后它返回

data = list(csv.reader(infile, dialect=csv.excel_tab))
_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?

【问题讨论】:

  • 如果您可以将 excel 文件保存为 .csv 文件,那么您的生活将变得更加轻松。你有这种可能吗?
  • 是的,它已经是一个 csv 文件,但是谢谢。
  • 将第一个 with 块的正文更改为 data = list(csv.reader(infile, dialect=csv.excel_tab))。那将是一个好的开始
  • 好的,我更新了代码和返回
  • 我们现在又回到了一个较早的错误,为此我将您指向this post

标签: python excel sorting


【解决方案1】:
import csv
import oprator

# read the data from the source file
with open('case_name.csv') as infile:
    data = list(csv.reader(infile, dialect='excel'))

# sort a list of sublists by the item in index 2
data.sort(key=operator.itemgetter(2))


# time to write the results into a file
with open('case_name_sorted.csv', 'w') as outfile:
    writer = csv.writer(outfile, dialect='excel')
    writer.writerows(data)

【讨论】:

  • data = list(csv.reader(infile, dialect='excel')) _csv.Error: new-line character seen in unquoted field - 你需要在通用换行模式下打开文件吗?
  • 确认!这听起来像是excel方言的问题。由于我通常不使用 excel 文件,因此我以前从未遇到过这个问题。但是,我建议阅读this
  • 好的,我这样做了,但现在它说...IndexError: list index out of range。我应该改变哪一行?
  • 这个错误让我认为您至少有一行少于 3 列
  • 所有行共有三列,我只是想对最后一列进行排序,所有内容都已填写。没有空单元格。
猜你喜欢
  • 2014-08-13
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 2015-09-02
相关资源
最近更新 更多