私は空の文字列があると、それが分割されます:リストに空の要素が含まれているかどうかを確認するにはどうすればよいですか?
>>>''.split(',')
['']
分割の結果は['']
です。私はbool
を使って空であるかどうかをチェックします。それはTrue
を返します。
>>>bool([''])
True
分割結果が空であることを確認するにはどうすればよいですか?
私は空の文字列があると、それが分割されます:リストに空の要素が含まれているかどうかを確認するにはどうすればよいですか?
>>>''.split(',')
['']
分割の結果は['']
です。私はbool
を使って空であるかどうかをチェックします。それはTrue
を返します。
>>>bool([''])
True
分割結果が空であることを確認するにはどうすればよいですか?
bool([''])
の場合、リスト['']
にはの内容があり、の場合は空の文字列''
が表示されます。
リスト内のすべての要素は、あなたがall()
組み込み関数を使用することができます(リストは文字列''
が含まれているので、もしそれがFalse
を返します)「空」ではありませんかどうかを確認したい場合は:
all(v for v in l)
それはTrue
値を持っている場合、これはリストl
をチェックして、すべての要素v
かかります。 すべて要素の場合は、True
が返されます。少なくとも1つでも返されない場合は、False
が返されます。例として:場合は、部分的なチェックを実行して見ることがany()
でこれを置き換えることができ
l = ''.split(',')
all(v for v in l)
Out[75]: False
リストl
内の項目のいずれかがTrue
の価値を持っています。両方の用途に
より包括的な例*:
l = [1, 2, 3, '']
all(l)
# '' doesn't have a True value
Out[82]: False
# 1, 2, 3 have a True value
any(l)
Out[83]: True
* @ShadowRangerはコメントで指摘したように、彼らの両方がちょうど受け入れることから、まったく同じものはall(l)
またはany(l)
で行うことができます最後は反復可能です。
簡素化:'すべて(vの場合はv) 'を'すべて(l) 'に変更します。 'all'が' list'を直接処理できるときに特別なジェネレータ式を作る必要はありません。 – ShadowRanger
また、 'all'と' any'を反転しました。 'all'はすべての結果が空でない場合、空でない要素がない場合、' any'は空でない要素を持つ場合( '空 'を持つ可能性がありますが' any'が 'True '、少なくとも1つは空ではない)。おそらくここでは 'any'が役に立つでしょう。 – ShadowRanger
分割結果は空ではありません。あなたが探している「空虚」の感覚は最高の元、分割されていない文字列を見ることで確認されています
if not original_string:
# It's empty.
しかし、あなたは本当にこのため、分割結果を見たい場合:
if len(split_result) == 1 and not split_result[0]:
# It's "empty".
それ本当にありえない空のそのリスト内の要素が空であるかどうかをチェックしたい場合は、行うことができます
:
string = ''.split(',')
if not string[0]:
print "empty"
str.split()
documentation,「空の文字列を指定した区切り文字で分割すると['']が返されます。あなたは(split(",")
の使用など)の明示的な区切り文字を使用しているとき、「
は、このような場合のためにチェックするには、このような何か:
l = s.split(",")
if len(l) == 1 and l[0] == '':
print("string was empty")
を空虚は重要な結果である場合は、おそらく最高をテストします最初の元の文字列:
x = ''
if x:
# Original string was non-empty, split it
splitx = x.split(',')
if any(splitx):
# There was at least one character in the original string that wasn't a comma
最初のテストルールアウト空の最初の文字列を、分割された文字は何もなかったので、全体を返された文字列をany
ルールを使用して、第2の1空の文字列が束になっていますが、空でない文字列はありません。 1つの空でない文字列がある限り、それはパスします。
注:CSVファイルを解析する場合は、.split(',')
を使用しないでください。これを正しく処理する(エスケープやクォーテーションなどを含む)csv
moduleがあります。常にをCSVの解析に使用する必要があります。追加ボーナス:csv
は''
の入力を[]
行に変換します。['']
のような真実性を直接テストすることはできません。str.split
のようになります。例:まだ引用処理しないstr.split(',')
と同じアプローチ対
>>> import csv, io
>>> f = io.StringIO('\n\na,b,c\n1,2,3\n\n')
>>> [row for row in csv.reader(f) if row] # Stripping easily
[['a', 'b', 'c'], ['1', '2', '3']]
、エスケープなど:私が見
>>> f = io.StringIO('\n\na,b,c\n1,2,3\n\n')
>>> stripped = (line.rstrip('\r\n') for line in f) # Must manually strip line endings first
>>> [line.split(',') for line in stripped if line]
[['a', 'b', 'c'], ['1', '2', '3']]
。空リストではありません。私はその状況を除外したいと思う。私はやり方を考えている。 – Tony
最終的に、何をしようとしていますか?最初に空のリストを分割しようとしても意味がありません。リスト内のif文またはif式でこのコードをゲートすることができます: 'if s1:s2 = s1.split( '、').. ' – smci