首页 > 解决方案 > 有效地连接地址行

问题描述

我的数据库存储了一些标准地址行字段(地址行 1,2.. 城市、国家、邮政/邮政编码),我想将它们连接到一个人的形式。我已经编写了以下代码,但我不确定这对于一堆 if 语句是否非常有效。(用python编写,但这是我关心的算法)

def human_readable_address(self):
    '''
    Return human readable address
    If address1 is empyty, return None
    '''
    addr = ""

    if(self.address1):
        addr += self.address1 + ", "
    else:
        return None

    if(self.address2):
        addr += self.address2 + ", "
    if(self.city):
        addr += self.city + ", "
    if(self.postal_code):
        addr += self.postal_code + ", "
    if(self.country):
        addr += self.country + ", "

    return addr

你们有什么感想?有没有更好的办法?

标签: pythonalgorithmconcatenationstreet-address

解决方案


而不是使用字符串连接(每次都会创建一个新字符串),您可以使用str.join()

def human_readable_address(self):
    '''
    Return human readable address
    If address1 is empty, return None
    '''

    if not self.address1:
        return None

    return ', '.join(filter(None, [self.address1, self.address2, self.city,
                                   self.postal_code, self.country]))

推荐阅读