【发布时间】:2018-04-05 00:32:20
【问题描述】:
Python 专家,
问题如下:
我有一个用 JSON 进行的大型机 AS/400 提取,被处理成一个“长”单个字符串,以便进一步切片/子字符串(如果这是一个词)。解析结果创建具有多个属性的模型实例。这些属性会生成一个OrderedDict() 以再次序列化(这是因为将来数据的来源可能会发生变化,我需要在此级别维护抽象)。我从最近的研究中了解到,将''(空字符串)的属性/数据维护为None 以在未来进行最佳分析的最佳方式。
for i, line in enumerate(data_json):
swap_string += line['data']
if data_json[i] == data_json[-1] or data_json[i+1]['data'][1] == '_':
swap_list.append(swap_string)
swap_string = ''
这是原始结果:
_ D 958.860 L B NA0.000 010 N 001 U 0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 999 T00 000 99 999 -/- 001 BG/CODEBEDINGUNGEN : BG F04/F07/F20;
然后,有了这个字符串,我就有了一个'map'或一个'header'来生成可以序列化切片的对象等等:
slices = ['3:23', '23:24', '26:27', '29:38', '39:42', '43:46', '48:50', '51:52', '53:54', '55:58', '61:67', '72:79']
然后,我请求类实例化并创建这些属性:
def __init__(self, bm=None, kg=None, abm_saa=None, la=None, lt=None,
bu_su=None, pos=None, hws=None, sp=None, r=None, p=None,
asa=None, em_ab=None, em_bis=None, benennung=None,
asb=None, t_a=None, vkfbez=None, pws1=None, qu1=None,
pws2=None, qu2=None, da=None, anz=None, t_b=None,
bg=None, code=None, pruef=None, add_info=None):
self.bm = bm
self.kg = kg
self.abm_saa = abm_saa...
然后问题来了:
我的问题是:使用带有切片分隔符的列表,如何使用 for 循环将对象实例化为应用列表理解的正确属性?是否也可以使用类中的属性进行循环?另外,使用简单的if 语句将空字符串作为None 应用到对象中?
for data in swap_list:
for slice_str in slices:
agr = PdsAGRMZDataModels()
agr.abm_saa = data[slice_str].strip()
agr.la = data[slice_str].strip()
【问题讨论】:
-
感谢格式化@martineau
标签: python string object substring