从csv文件读取Python脚本
以上所有内容都是excel工作表中的值,转换为csv,即上图所示的值 您注意到的标题包含七个Coulmn,它们下面的数据各不相同 我有这个脚本来从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
"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': ''}