我已经阅读了一个文本文件并使用python将数据插入Riak DB。
csv_data = csv.reader(file('abc.txt'))
txt文件包含两个用@@
分隔的字段tempstring = str(row).split('@@')
并插入riak DB
new_user = user_buckets.new(FirstUser,data={
'user':FirstUser,
'friendlist':FriendList,
'is_active':True
})
new_user.store()
从Riak DB获取数据我使用Map
user_buckets.map("""
function(v) {
var data = JSON.parse(v.values[0].data);
if(data.is_active == true) {
return [[v.key, data]];
}
return [];
}
""")
for result in user_buckets.run():
print "%s - %s" % (result[0], result[1])
并以格式
提供 Dinesh - {u'friendlist':[u'Bakshi',u'Kishna'],u'is_active':是的,你'''':'d'hinesh'}在这里如何删除输出格式的u?插入到Riak时转换为字符串会导致形成u?
修改1
我使用mapreduce
获取了Riak DBfunction(v) {
var data = JSON.parse(v.values[0].data);
var mapped = [];
var grouping = [];
if(data.is_active == true) {
userValue = data.user;
friendListValue = data.friendlist;
for (var i=0; i<friendListValue.length; i++){
friendValue = friendListValue[i];
mapped.push([userValue, friendValue, friendListValue]);
grouping.push([mapped[i]]);
}
}
}
此处分组是包含
等数据的多维数组示例
[u'Dinesh', u'Shiva', [u'Bakshi', u' Kishna', u' Hanks', u' Shiva', u' Bindu', u' Hari', u' Karma', u' Sita']]
[u'Shiva', u'Dinesh', [u'Hanks', u' Tom', u' Karma', u' Hari', u' Dinesh']]
当我使用
比较数组中的值时if(grouping[j][0]==grouping[k][1]&& grouping[j][1]==grouping[k][0])
在上面给出的类似示例中,它应该返回true但它会给出错误。所以我认为这是由于你。现在我如何比较阵列并找出匹配案例?在这里,我认为如果有条件,我犯了一个错误。
答案 0 :(得分:1)
您没有JSON数据,您拥有Python字典的字符串表示形式。您需要使用json.dumps()
将其显式转换为JSON。