【问题标题】:Ordering a file订购文件
【发布时间】:2018-03-23 19:18:30
【问题描述】:

我有这个代码

archivo=open("archivo.csv","r")
for i in range(10):
    for reg in archivo:
        if archivo[reg] < archivo[reg+1]:
            x = archivo[reg]
            archivo[reg] = archivo[reg+1]
            archivo[reg+1] = x
archivo.close()
archivo = open("archivo.csv","w")
archivo.write(reg)

我想要的是按字母顺序排列文件并按顺序保存,但我有几个错误。主要的说该文件没有属性 getitem 并且在网络上我没有找到任何相等的东西。有人可以帮我吗?

输入看起来像

Matt | 7 | 8 
John | 9 | 6 
Jim | 6 | 7

【问题讨论】:

  • 输入是什么样的?只有几行就足够了。还有为什么for i in range(10):。一次只能读取几行,因此其他 9 次迭代将无济于事。基本上,您需要做的是将每一行读入某种形式,可以对其进行比较和排序,目前您只是比较包含行本身的字符串。还请考虑您可以使用 csv 模块,如果您能够使用它,这可能只是您的任务。
  • for 行是因为如果位置 7 中以“a”开头的项目例如被订购一次,它就不会在第一个位置。如果您有其他排序文件行的系统,请分享它,因为不具体。
  • 我不明白你在说什么
  • 很高兴看到您的输入文件 archivo.csv 的样本,因此我们不需要生成自己的测试文件。在我看来是一个问题的一件事是您使用 reg 就好像它是一个索引 - 它实际上是档案的一个组件,而不是一个索引。
  • 你认为archivo[reg]应该做什么?错误告诉你这是无效的。

标签: python python-2.7 file csv


【解决方案1】:

我已将源 CSV 文件修改为逗号分隔。所以archivo.csv 看起来像

Matt,7,8
John,9,6
Jim,6,7

现在要读取这个文件,python 已经有一个名为csv 的标准模块。使用它我们可以可靠地读取和写入 csv。

from  csv import reader, writer
archivo=reader(open("archivo.csv","r"))
a = sorted(archivo)
archivo1 = writer(open("archivo1.csv", "w"))
for row in a:
    archivo1.writerow(row)

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2019-08-22
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    相关资源
    最近更新 更多