从csv文件读取Python脚本

从csv文件读取Python脚本,python,csv,Python,Csv,以上所有内容都是excel工作表中的值,转换为csv,即上图所示的值 您注意到的标题包含七个Coulmn,它们下面的数据各不相同 我有这个脚本来从python脚本生成这些,脚本如下 "Type","Name","Description","Designation","First-term assessment","Second-term assessment","Total" "Subject","Nick","D1234","F4321",10,19

以上所有内容都是excel工作表中的值,转换为csv,即上图所示的值

您注意到的标题包含七个Coulmn,它们下面的数据各不相同

我有这个脚本来从python脚本生成这些,脚本如下

           "Type","Name","Description","Designation","First-term assessment","Second-term assessment","Total"
           "Subject","Nick","D1234","F4321",10,19,29
           "Unit","HTML","D1234-1","F4321",18,,
           "Topic","Tags","First Term","F4321",18,,
           "Subtopic","Review of representation of HTML",,,,,
如何修改上面的脚本以说明此数据属于特定的列标题

谢谢..

您正在导入,但从未使用过。为什么?

如果你这样做

 from django.db import transaction
 import sys
 import csv
 import StringIO



 file = sys.argv[1]
 no_cols_flag=0
 flag=0
 header_arr=[]


 print file
 f = open(file, 'r')



while (f.readline() != ""):
  for i in [line.split(',') for line in open(file)]: # split on the separator
    print "==========================================================="
    row_flag=0
    row_d=""
    for j in i: # for each token in the split string
      row_flag=1
      print j


      if j:
        no_cols_flag=no_cols_flag+1
        data=j.strip()
        print j

    break
您将获得一个
阅读器
对象,该对象将包含您所需的所有内容;第一行将包含标题,后续行将包含相应位置的数据

更好的可能是(如果我理解正确):

这个
DictReader
可以迭代,返回一个
dict
s序列,该序列使用列标题作为键,以下数据作为值,因此

import csv
reader = csv.DictReader(open(file, "rb"), dialect="excel") # Python 2.x
# Python 3: reader = csv.DictReader(open(file, newline=""), dialect="excel")
将输出

for row in reader:
    print(row)

在Python2.x中,始终以二进制模式打开文件(“rb”或“wb”,视情况而定)。@John Machin:为什么?csv模块文档对此只字未提,我在打开文件时没有
b
标志。有些例子使用它,有些不使用。你可能说得很对,但我想知道这背后的基本原理。@Tim:2.x文档说:“如果csvfile是一个文件对象,那么在有区别的平台上,它必须使用“b”标志打开。”即Windows平台。因此,对于平台独立性,应该始终使用“rb”。这同样适用于写作,即使文档没有这样说。CSV记录由独立于平台的CRLF终止——它本质上是一种二进制格式。如果你在Windows上不提供“wb”,你就得到了CRLF。@约翰:一定是瞎了(我刚才在页面上搜索了
rb
),谢谢。将编辑。
for row in reader:
    print(row)
{'Name': 'Nick', 'Designation': 'F4321', 'Type': 'Subject', 'Total': '29', 'First-term assessment': '10', 'Second-term assessment': '19', 'Description': 'D1234'}
{'Name': 'HTML', 'Designation': 'F4321', 'Type': 'Unit', 'Total': '', 'First-term assessment': '18', 'Second-term assessment': '', 'Description': 'D1234-1'}
{'Name': 'Tags', 'Designation': 'F4321', 'Type': 'Topic', 'Total': '', 'First-term assessment': '18', 'Second-term assessment': '', 'Description': 'First Term'}
{'Name': 'Review of representation of HTML', 'Designation': '', 'Type': 'Subtopic', 'Total': '', 'First-term assessment': '', 'Second-term assessment': '', 'Description': ''}