このようなものはありますか?あなたはそれが単一の文字列かどうかを確認するためにいくつかのチェックを行うことができます。 basestring
代わりのstr
をチェックするのはなぜ
>>> def checktype(obj):
return bool(obj) and all(isinstance(elem, basestring) for elem in obj)
>>> obj1 = ['foo','bar','bar','black','sheet']
>>> obj2 = [1,2,3,4,5,'bar']
>>> obj3 = 'bar'
>>> for i in [obj1, obj2, obj3] :
print checktype(i)
True
False
True
?それはstr
とunicode
両方のタイプから継承する一般的なクラスだから
あなたはbasestring
代わりのstr
をチェックする必要があります。 str
のみをチェックすると、unicode
タイプは除外されます。
Steven Rumbalski'sのように、文字列のリストを確認する必要がある場合は、これを行うことができます。
>>> def is_list_of_strings(lst):
return bool(lst) and not isinstance(lst, basestring) and all(isinstance(elem, basestring) for elem in lst)
# You could break it down into `if-else` constructs to make it clearer to read.
>>> for i in [obj1, obj2, obj3] :
print is_list_of_strings(i)
True
False
False
EDITからabarnert's提案を1として、あなたはまた、代わりにnot isinstance(lst, basestring)
のlist
をチェックすることができ、コードは次のように書き換えになるだろう。
>>> def is_list_of_strings(lst):
return bool(lst) and isinstance(lst, list) and all(isinstance(elem, basestring) for elem in lst)
# You could break it down into `if-else` constructs to make it clearer to read.
>>> for i in [obj1, obj2, obj3] :
print is_list_of_strings(i)
True
False
False
1つのライナーから移動することができます。
>>> def is_list_of_strings(lst):
if lst and isinstance(lst, list):
return all(isinstance(elem, basestring) for elem in lst)
else:
return False
明確にするために、私は 'is_list_of_string''へchecktype'の名前を変更します。 –
考慮すべき点: '[]'は文字列のリストかどうか? – abarnert
'[]'は文字列のリストではありませんが、空のリストです。 – alvas