希望我没有错过任何明显的东西......
我正在创建一个函数,可以轻松地从Django查询创建特定格式的JSON数据。但是,这应该是一个纯粹的蟒蛇问题。
我希望能够将具有给定索引的所有值转换为指定格式,并使用如下函数:
data = [['foo1','bar1'],['foo2','bar2']]
format = {1:'VALUE says Hello world'}
>> some_function(data, format)
[['foo1','bar1 says Hello World'],['foo2','bar2 says Hello World']]
基本理念:
def some_function(data, format):
for row in data:
for count, value in enumerate(row):
if format.has_key(count):
#do something to replace 'VALUE' with value
else:
#just use value, no changes
return formatted_data
这个问题的根源是数据直接进入网络,我想根据我通过泛型函数的内容定义特定的格式。
为清晰起见编辑:
我应该向some_function()
添加什么才能将数据列表中的相应值转换为格式字典定义的格式?
答案 0 :(得分:3)
def some_function(data, format):
result = []
for row in data:
lst = []
for count, value in enumerate(row):
if count in format:
string = format[count].format(value)
lst.append(string)
else:
lst.append(value)
result.append(lst)
return result
data = [['foo1', 'bar1'], ['foo2', 'bar2']]
format = {1: '{0} says Hello world'}
print(some_function(data, format))
# prints: [['foo1', 'bar1 says Hello world'], ['foo2', 'bar2 says Hello world']]
您可以使用的格式在docs
。
答案 1 :(得分:1)
我建议用{1:'%s says Hello world'}
替换格式。
然后你可以:
def some_function(data, format):
formatted_data = []
for row in data:
r = []
for count, value in enumerate(row):
if count in format:
value = format[count] % value
r.append(value)
formatted_data.append(r)
return formatted_data
虽然有更优雅的方法来完成任务。
答案 2 :(得分:1)
我们希望通过转换每一行中的每个单元格来产生数据,其中"转换"通过查找单元格"列ID"来定义。 (我们可以使用enumerate
将ID与单元格内容进行匹配)我们的格式"字典并应用相应的字符串格式化程序。如果没有应用格式,我们只想使用原始值;我们可以通过使用"默认"来处理它。具有该结果的格式。
拼写错误:
def transform(data, formats):
return [
[
formats.get(i, '{0}').format(column)
for i, column in enumerate(row)
]
for row in data
]
transform([['foo1','bar1'],['foo2','bar2']], {1:'{0} says Hello world'})