188

次のことを行うための最も慣用的な方法は何ですか?

def xstr(s):
    if s is None:
        return ''
    else:
        return s

s = xstr(a) + xstr(b)

更新: str(s)を使用するというTryptichの提案を取り入れています。これにより、このルーチンは文字列以外の他のタイプでも機能します。Vinay Sajipのラムダの提案にひどく感銘を受けましたが、コードを比較的単純に保ちたいと思います。

def xstr(s):
    if s is None:
        return ''
    else:
        return str(s)
4

16 に答える 16

179

おそらく最短で str(s or '')

None が False であるため、x が false の場合、"x or y" は y を返します。詳細な説明については、ブール演算子を参照してください。短いですが、あまり明確ではありません。

于 2012-08-31T12:28:40.650 に答える
163
def xstr(s):
    return '' if s is None else str(s)
于 2009-06-23T19:21:12.293 に答える
111

関数をstr()組み込みのように動作させたいが、引数がNoneのときに空の文字列を返す場合は、次のようにします。

def xstr(s):
    if s is None:
        return ''
    return str(s)
于 2009-06-23T19:28:18.147 に答える
63

return s or ''あなたが述べた問題に対してうまくいきます!

于 2009-06-24T03:08:53.613 に答える
15
def xstr(s):
   return s or ""
于 2009-06-24T03:56:07.280 に答える
10

機能的な方法(ワンライナー)

xstr = lambda s: '' if s is None else s
于 2009-06-23T19:31:58.323 に答える
6
def xstr(s):
    return {None:''}.get(s, s)
于 2009-06-23T19:28:12.107 に答える
4

Python 2.4 との互換性が必要な場合の上記のバリエーション

xstr = lambda s: s is not None and s or ''
于 2009-06-24T03:37:06.787 に答える
1
def xstr(s):
    return s if s else ''

s = "%s%s" % (xstr(a), xstr(b))
于 2009-06-23T19:25:57.853 に答える
0

短絡評価を使用する:

s = a or '' + b or ''

+ は文字列に対してあまり適切な操作ではないため、フォーマット文字列を使用することをお勧めします。

s = "%s%s" % (a or '', b or '')
于 2009-06-23T19:37:21.730 に答える