【问题标题】:Sorting a csv file alphabetically on Python在 Python 上按字母顺序对 csv 文件进行排序
【发布时间】:2016-08-23 04:25:28
【问题描述】:

我做了一个数学测验作为练习。任务 3 的一部分是将包含姓名和分数的 CSV 文件按字母顺序组织。我已经完成了一些代码,但我想知道如何让它像我期望的那样工作。我不太确定我做了什么,所以请你把解释简单一点。

data = input('How would you like the data? a for alphabetically, b for highest score  to lowest and c for average score highest to lowest. press q to exit: ')
if 'a':
    score_file = open('scorefile.csv')
    for x in sorted (score_file, key=str.lower):
        print (x)

这是它运行时的样子:

【问题讨论】:

  • 您的代码有效吗? score_file 不是您可以排序的列表,您必须先阅读这些行。
  • @DisplayName 如何更改它以使其更好?
  • 也许看看这个:docs.python.org/3/library/csv.html?highlight=csv#csv.reader 一个可能有帮助的 csv 阅读器
  • @jDO 我加了上面运行代码的图片
  • @DisplayName 我添加了上面运行代码的图片

标签: python file sorting python-3.x csv


【解决方案1】:

看看这里发生了什么?

>>> if "a":
...     print ("True!")
... else:
...     print("False!")
... 
True!
>>> 
>>> if "aadasgabherbasdvc23d3wv":
...     print ("True!")
... else:
...     print("False!")
... 
True!
>>> 
>>> if "":
...     print ("True!")
... else:
...     print("False!")
... 
False!
>>> 
>>> if None:
...     print ("True!")
... else:
...     print("False!")
... 
False!
>>> 

任何非空字符串都将评估为True。空字符串和关键字None 评估为False(可能还有更多示例)。 这意味着无论你输入什么,嵌套在if 'a'下的代码都会被执行。如果/当您为用户输入“b”和“c”编写代码时,您会看到这一点。

如果您想将用户输入与字符串 'a' 进行比较,您可以:

data = input('How would you like the data? a for alphabetically, b for highest score  to lowest and c for average score highest to lowest. press q to exit: ')
if data == 'a':
    # do something  

关于其余代码... Python 有一个csv 模块。您可以轻松地手动拆分 csv 文件,因为它应该以逗号分隔,但 csv 模块以稍微复杂的方式处理它(我不确定,但我认为它可以理解其中包含逗号的值,例如)。

当您使用open() 时,不要忘记之后致电close()。您可以通过使用with(顺便说一句,称为上下文管理器)来完全避免这种open/close 业务。然后你可以做

import csv

with open('scorefile.csv', 'r') as csv_file:
    rows = csv.reader(csv_file)

with open('scorefile.csv', 'r') as csv_file:
    for line in csv_file:
       ...

或任何您想对文件执行的操作。关键是使用with 会在您完成读取数据后自动关闭文件。这样,您就不必记得拨打close()

【讨论】:

  • 非常感谢,帮了大忙!! ?
猜你喜欢
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 2022-10-07
  • 2011-08-29
相关资源
最近更新 更多