CSV解析器中的另一个问题。
我需要将年份及其相应的国家/地区填充到sqlite数据库中的表中。我已成功缩小它以获取所有行的值,如果它们中的任何一个具有值。但是尝试将数据保存()到数据库,它会为那些没有任何价值的人抛出ValueError: invalid literal for int() with base 10: ''
。
if (row[12] or row[13] or row[14] or row[15] ) != "":
country1 = re.match(r'.*\((\w+)\)', header[12])
country2 = re.match(r'.*\((\w+)\)', header[13])
country3 = re.match(r'.*\((\w+)\)', header[14])
country4 = re.match(r'.*\((\w+)\)', header[15])
Yr.country = country1
Yr.country = country2
Yr.country = country3
Yr.country = country4
Yr.mol = MoleculeDictionary.objects.get(id=row[0])
Yr.year = row[12]
Yr.year = row[13]
Yr.year = row[14]
Yr.year = row[15]
#Yr.save()
print country1.group(1), row[12], country2.group(1), row[13], country3.group(1), row[14], country4.group(1), row[15]
Year (US),Year (Eur),Year (Jap), Yea(CHI),
,,,,,
,,,,,
,,,,,
,,2009,,,
,,1977,,,
,1982,1983,,,
打印声明
US Eur 2009 Jap CHI
US Eur 1977 Jap CHI
US 1982 Eur 1983 Jap CHI
但我更愿意只获得每行中带有值的列。我应该如何得到2009欧元,1977欧元,1982年美元,1983欧元。请忽略我的无能,因为我不熟悉python和Django。感谢您提前提出的所有建议。
感谢。
答案 0 :(得分:0)
我不知道你的意思
宁愿只获得每行中包含值的列
所以也许您可以指定所需的输出?
但是,鉴于您的csv为test.csv
,此脚本
import csv
with open('test.csv') as myfile:
reader = csv.reader(myfile)
header = []
for row in reader:
if header == []: # first row
header = row
else:
for i in range(len(row)):
if row[i] != '':
# calculate custom header
custom_header = header[i].split('(')[1].split(')')[0].upper()
print custom_header, row[i]
将打印
JAP 2009
JAP 1977
EUR 1982
JAP 1983
这是你想要的吗?