【问题标题】:How to skip first item in a text file如何跳过文本文件中的第一项
【发布时间】:2016-01-27 21:16:09
【问题描述】:

所以我有一个正在进行的程序,它将从文件中获取一堆数字(在这种情况下,它们是测试的分数),将它们添加到数组中,然后按降序或升序对它们进行排序命令。我已经设法使用以下代码使其工作

score_array = []

def opening_file():
     with open('scores.txt', newline='') as infile:
         reader = csv.reader(infile)
         for row in reader:
              score_array.extend(map(int, row))
def sorting_int():
     print ("How would you like to sort the scores? Press 1 for descending and 2 for ascending order..")
     userinput = int(input())
     if userinput == 1:
          score_array.sort(reverse=True)
     if userinput == 2:
          score_array.sort()
     print (score_array)

opening_file()
sorting_int()

在我的“scores.txt”文件中,我有以下数字 10,0,6,3,7,4,它们都根据用户的选择进行排序。但是,我希望能够以学生的名义添加。例如,将“Alex”添加到文本文件中,它会跳过第一项(即学生的姓名),而是像往常一样对数字进行排序。我想有例如: 亚历克斯,10,0,6,3,7,4 并仅按降序/升序对数字进行排序。

我将如何去做这样的事情?我也尝试过谷歌的解决方案,但恐怕我没有找到一个解决方案。

【问题讨论】:

    标签: arrays python-3.x


    【解决方案1】:

    您可以修改行解析器以忽略未通过测试的单元格 - 在这种情况下为 isdigit:

      for row in reader:
          score_array.extend(map(int, (v for v in row if v.isdigit())))
    

    【讨论】:

      【解决方案2】:

      有很多方法可以做到这一点,快速的方法是在排序之前使用 pop/insert 方法来操作数组,如下所示:

      a = ["corey", 1, 66.25, 333, 333, 1234.5]
      tmp = a.pop(0)
      # array with name removed, sort array at this point
      print a
      # add name back
      a.insert(0,tmp)
      print a
      

      【讨论】:

      • 如何在我的程序中实现它?
      • 您会在排序前弹出数组元素 0。不过,您可能想要备份并阅读数组和数组操作。
      猜你喜欢
      • 2017-03-04
      • 1970-01-01
      • 2015-09-18
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多