Dou*_*han 5 python django string-concatenation
我正在Django模型上创建一个名为"address"的属性.我希望地址包含我在模型上的多个字段的串联.问题是并非所有这些字段的实例都具有所有这些字段的值.所以,我想只连接那些有值的字段.
什么是最好/最Pythonic的方式来做到这一点?
以下是该模型的相关字段:
house = models.IntegerField('House Number', null=True, blank=True)
suf = models.CharField('House Number Suffix', max_length=1, null=True, blank=True)
unit = models.CharField('Address Unit', max_length=7, null=True, blank=True)
stex = models.IntegerField('Address Extention', null=True, blank=True)
stdir = models.CharField('Street Direction', max_length=254, null=True, blank=True)
stnam = models.CharField('Street Name', max_length=30, null=True, blank=True)
stdes = models.CharField('Street Designation', max_length=3, null=True, blank=True)
stdessuf = models.CharField('Street Designation Suffix',max_length=1, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
我可以做这样的事情:
def _get_address(self):
return "%s %s %s %s %s %s %s %s" % (self.house, self.suf, self.unit, self.stex, self.stdir, self.stname, self.stdes, self.stdessuf)
Run Code Online (Sandbox Code Playgroud)
但结果会有额外的空格.
我可以做一系列if语句并在每个语句中连接,但这看起来很难看.
处理这种情况的最佳方法是什么?
谢谢.
parts = (1, 'a', 'b', 2, 'c', 'd', None, 'f')
# parts = (self.house, self.suf, self.unit,
# self.stex, self.stdir, self.stname,
# self.stdes, self.stdessuf)
' '.join(str(part) for part in parts if part is not None)
# '1 a b 2 c d e f'
Run Code Online (Sandbox Code Playgroud)
您只需执行一个列表比较,并检查是否有任何值不为 None,并将它们转换为字符串,以便无论类型如何,它们都可以正确连接。
| 归档时间: |
|
| 查看次数: |
4806 次 |
| 最近记录: |