【问题标题】:Simplify a series of if statements [duplicate]简化一系列if语句[重复]
【发布时间】:2021-06-17 20:39:33
【问题描述】:

我是编码新手,我正在创建元数据转换函数,新文件的格式有日期和时间戳,格式为 yyyymmdd_hhmmss。我使用一系列 if 语句创建了以下代码,因为原始元数据将日期/月份列为单个数字(必要时加倍。我假设有一种更优雅的方式来完成此任务并用于学习目的和可读性/简单性. 任何建议都将不胜感激!任何其他简化代码的建议也很感激,谢谢。

 for fileExt in fpath:
            with open(fileExt) as f:
                data = json.loads(f.read())
                if 'animalID' in data:
                    ext=fileExt.replace('\\metaData.json', '\\Miniscope\\metaData.json')
                    animalID=data['animalID']
                    timeStamp=data['recordingStartTime']
                    year=str(timeStamp['year'])
                    month=str(timeStamp['month'])
                    if len(month) < 2:
                        month=str(0)+month
                    day=str(timeStamp['day'])
                    if len(day) < 2:
                        day=str(0)+day
                    second=str(timeStamp['second'])
                    if len(second) < 2:
                        second=str(0)+second
                    minute=str(timeStamp['minute'])
                    if len(minute) < 2:
                        minute=str(0)+minute
                    hour=str(timeStamp['hour'])
                    if len(hour) < 2:
                        hour=str(0)+hour
                    date=year+month+day+'_'+hour+minute+second
                    with open(ext) as d:
                        data2 = json.loads(d.read())
                        frameRate=float(data2['frameRate'])
                        jdict ={'origin':animalID,'fps':frameRate,'date':date,
                                'orig_meta':[data,data2]}
                        jsonFile=json.dumps(jdict,indent=4)
                        newFileName=ext.replace('\\metaData.json', '\\metaDataTif.json')
                        n = open(newFileName, 'w')
                        n.write(jsonFile)
                        n.close()

【问题讨论】:

  • Code Review 更适合于此。所以不是正确的地方。
  • 将整数v 补零到两位数字所需要做的就是f"{v:02}"。这相当于"{:02}".format(v)"%02d" % v
  • 谢谢,这有帮助,我什至不知道一个好的搜索词可以用来找到答案。
  • 你也可以组合它们。例如,要获取 MM/DD/YYYY,您可以使用f"{month:02}/{day:02}/{year:04}",或"{:02}/{:02}/{:04}".format(month, day, year),或"%02/%02/%04" % (month, day, year)

标签: python simplify


【解决方案1】:

这是您可以使用的解决方案


def adjust_value(value):
    if len(value) < 2:
        value = str(0) + value
    return value

for fileExt in fpath:
    with open(fileExt) as f:
        data = json.loads(f.read())
        if 'animalID' in data:
            ext=fileExt.replace('\\metaData.json', '\\Miniscope\\metaData.json')
            animalID=data['animalID']
            timeStamp=data['recordingStartTime']
            year=str(timeStamp['year'])
            month=str(timeStamp['month'])

            month = adjust_value(month)
            day=str(timeStamp['day'])

            day = adjust_value(day)
            second=str(timeStamp['second'])

            second = adjust_value(second)
            minute=str(timeStamp['minute'])

            minute = adjust_value(minute)
            hour=str(timeStamp['hour'])

            hour = adjust_value(hour)
            date=year+month+day+'_'+hour+minute+second
           

            with open(ext) as d:
                data2 = json.loads(d.read())
                frameRate=float(data2['frameRate'])
                jdict ={'origin':animalID,'fps':frameRate,'date':date,
                        'orig_meta':[data,data2]}
                jsonFile=json.dumps(jdict,indent=4)
                newFileName=ext.replace('\\metaData.json', '\\metaDataTif.json')
                n = open(newFileName, 'w')
                n.write(jsonFile)
                n.close()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多