Python: большая часть идиоматического способа не преобразовать Ни один в пустую строку?

139
задан Mark Harrison 21 July 2009 в 03:17
поделиться

11 ответов

Если вы действительно хотите, чтобы ваша функция вела себя как встроенная функция str () , но возвращала пустую строку, когда аргумент None, сделайте следующее:

def xstr(s):
    if s is None:
        return ''
    return str(s)
87
ответ дан 23 November 2019 в 23:16
поделиться

Используйте струну фа при использовании python v3.7

xstr = F"{s}"
-1
ответ дан 23 November 2019 в 23:16
поделиться

Использовать оценку короткого замыкания:

s = a or '' + b or ''

Поскольку + не очень хорошая операция со строками, лучше использовать строки формата:

s = "%s%s" % (a or '', b or '')
0
ответ дан 23 November 2019 в 23:16
поделиться
def xstr(s):
    return s if s else ''

s = "%s%s" % (xstr(a), xstr(b))
1
ответ дан 23 November 2019 в 23:16
поделиться
def xstr(s):
    return {None:''}.get(s, s)
7
ответ дан 23 November 2019 в 23:16
поделиться
def xstr(s):
   return s or ""
14
ответ дан 23 November 2019 в 23:16
поделиться

Если вы знаете, что значение всегда будет либо строкой, либо None:

xstr = lambda s: s or ""

print xstr("a") + xstr("b") # -> 'ab'
print xstr("a") + xstr(None) # -> 'a'
print xstr(None) + xstr("b") # -> 'b'
print xstr(None) + xstr(None) # -> ''
94
ответ дан 23 November 2019 в 23:16
поделиться

Функциональный способ (однострочный)

xstr = lambda s: '' if s is None else s
7
ответ дан 23 November 2019 в 23:16
поделиться

return s или "" отлично подойдут для указанной вами проблемы!

57
ответ дан 23 November 2019 в 23:16
поделиться
def xstr(s):
    return '' if s is None else str(s)
137
ответ дан 23 November 2019 в 23:16
поделиться

Вариант вышеуказанного, если вам необходимо быть совместимым с Python 2.4

xstr = lambda s: s is not None and s or ''
4
ответ дан 23 November 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: