我有一个包含3列的csv文件,
Dick,25,Coder
John,23,Architect
Roony,20,Designer
Paras,40,Manager
如何使用python对json映射器解析它,该映射器指出哪一列与第2列一样是Age,3是Occupation? 像 -
这样的东西[
"Person","Age", "Job"
]
此外,如果age的值为整数,那将会很棒。 到目前为止,我有以下代码 -
import csv
import json
mapper = open('file.json')
csv_file = 'data.csv'
with open(self.csv_file, 'rb') as csvfile:
rdr = csv.reader(csvfile, delimiter='\t', quotechar='|')
j = json.loads(mapper.read())
for i in range(0, len(rdr)):
row = rdr[i]
mapped_r = j[i]
我想要像 -
这样的东西mapped = CSVMapper.MapObjects('data.csv', 'mapper.json')
print mapped[0].Age == 25 # age of Dick (1st element)
有没有更好的方法来解决问题?
答案 0 :(得分:1)
我认为https://github.com/samarjeet27/CSV-Mapper/符合您的需求。 使用
安装pip install csvmapper
浏览回购中的示例。也许你可以在你的情况下以这种方式使用它 -
mapper.json文件 -
[
[
{ "name" : "Person" },
{ "name" : "Age", "type" : "int" }
{ "name" : "Job" }
]
]
您可以将其实现为 -
import csvmapper
mapper = csvmapper.JSONMapper('mapper.json')
parser = csvmapper.CSVParser('data.csv', mapper)
for item in parser.buildObject():
print item.Job # Job of the item
print "will be %d after 2 years" %(item.Age+2) # item.Age is an int
希望这有帮助!