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
你们有什么感想?有没有更好的办法?
解决方案
而不是使用字符串连接(每次都会创建一个新字符串),您可以使用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]))
推荐阅读
- javascript - 将带有内联注释的歌词格式化为顶部带有和弦的可读歌曲
- java - 无法解析 MainActivity 中的方法“findViewById”
- machine-learning - 使用 Cython 或 numpy 在 Python 中加速 DBSCAN 算法(从头开始)
- javascript - 如何在Javascript中将所有文本在x轴上旋转x度
- php - 如何在laravel中使用json字符串将大数据插入数据库?
- reactjs - 为什么要在 render() 方法之外定义无状态函数?
- php - Guzzle 不读取身体值
- javascript - 扁平化字符串字典和字典
- javascript - What technologies are used in the editor of Canva
- python - 训练问题,Val 损失和准确率不变