使用 json 文件映射 CSV
Mapping CSV using json file
我有一个包含 3 列的 csv 文件,
Dick,25,Coder
John,23,Architect
Roony,20,Designer
Paras,40,Manager
我如何使用 python 对 json 映射器进行解析,该映射器指出哪一列是第 2 列是年龄,第 3 列是职业?
像 -
[
"Person","Age", "Job"
]
还有,如果年龄的值是整数就好了。
到目前为止,我有以下代码 -
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)
有没有更好的方法来解决这个问题?
我认为 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
希望对您有所帮助!
我有一个包含 3 列的 csv 文件,
Dick,25,Coder
John,23,Architect
Roony,20,Designer
Paras,40,Manager
我如何使用 python 对 json 映射器进行解析,该映射器指出哪一列是第 2 列是年龄,第 3 列是职业? 像 -
[
"Person","Age", "Job"
]
还有,如果年龄的值是整数就好了。 到目前为止,我有以下代码 -
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)
有没有更好的方法来解决这个问题?
我认为 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
希望对您有所帮助!