【问题标题】:Going back in a CSV file in python在 python 中返回 CSV 文件
【发布时间】:2025-12-15 10:05:02
【问题描述】:

我正在尝试解析这样的 CSV 文件:

name, init
Tim Keller, TK
Nick Fill, NK

这就是我想要的,有人像TK 这样输入,我会把他还给他Hello Tim Keller !

我唯一的问题是我无法在我的 CSV 文件中回退(嗯..我不知道该怎么做..)

这是我做的:

with open('datas.csv', 'rb') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=';', quotechar='|')
        for row in spamreader:
                for columns in row:
                        if columns == args[i]:
                                print "Hello ", columns, " !"

如果用户输入TK,那么使用该代码我将打印回Hello TK !

我尝试了类似columns-1 的东西,但似乎不是这样。

感谢您的帮助!

【问题讨论】:

    标签: python parsing csv


    【解决方案1】:
                for columns in row:
    

    没有必要。如果您在 spamreader 中使用 for row,您已经拥有这两个部分,只需索引行:row[0] 是名称,row[1] 是昵称。

    fine manual

    【讨论】:

      【解决方案2】:

      根据您的示例数据,您的分隔符是一个逗号 (,),或者可能是一个逗号后跟一个空格。不清楚引号字符是什么,但我会将其保留为默认值。

      另外,我假设 CSV 文件包含多行,如下所示:

      名称,初始化 蒂姆·凯勒,TK 尼克·菲尔,NK

      处理这个文件的代码如下:

      import csv
      
      search_initials = raw_input('Enter initials: ').strip()
      with open('datas.csv', 'rb') as csvfile:
          for name, initials in csv.reader(csvfile):
              if initials == search_initials:
                  print "Hello {}!".format(name)
      

      【讨论】:

        【解决方案3】:

        不将行放入“行”变量而是放入两个更有意义的变量可能会更清楚:

        for name, init in spamreader:
            if init == args[i]:
                print "Hello ", name, " !"
        

        【讨论】: