有效地连接地址行

2024-04-25 01:22:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据库存储了一些标准的地址行字段(地址行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

你们怎么看?有更好的办法吗?你知道吗


Tags: selfnonecityreturnifaddress地址code
2条回答

您可以使用一个连接到字符串中的列表理解来获取所需格式的地址:

address_1 = "first"
address_2 = False
address_3 = "third"

def make_address(*args):
  return "".join(["%s,\n" % x for x in args if x])[:-2]

address = make_address(address_1, address_2, address_3)

print(address)

如:https://repl.it/repls/LiveJuniorLanservers

您可以使用^{},而不是使用字符串串联(每次都会创建一个新字符串):

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

    if not self.address1:
        return None

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

相关问题 更多 >