1
lines = files.readlines()

for line in lines:
    if not line.startswith(' '):
        res = True
    if line.startswith(' '):
        res = False
return res

これは私のコードですが、少なくとも 1 行がスペースで始まっていない場合は True を返します。開いたファイルのすべての行がスペース以外で始まる場合にのみ True を返すように修正するにはどうすればよいですか。少なくとも 1 行がスペースで始まる場合は、False を返します。

4

3 に答える 3

5

使用all():

デモ:

>>> lines = ['a', ' b', ' d']
>>> all(not x.startswith(' ') for x in lines)
False
>>> lines = ['a', 'b', 'd']
>>> all(not x.startswith(' ') for x in lines)
True

また、メモリ内のすべての行をロードする必要はありません。単純にファイル オブジェクトを反復処理します。

with open('filename') as f:
   res = all(not line.startswith(' ') for line in f)
于 2013-10-27T08:41:54.203 に答える
4

allビルトインを使用。

return all(not line.startswith(' ') for line in lines)

all()ドキュメントの機能:

all(iterable) -> bool

Return True if bool(x) is True for all values x in the iterable.
If the iterable is empty, return True.

anyビルトインも同じ方法で使用できます。

return not any(line.startswith(' ') for line in lines)

any()ドキュメントの機能:

any(iterable) -> bool

Return True if bool(x) is True for any x in the iterable.
If the iterable is empty, return False.
于 2013-10-27T08:41:47.260 に答える
0
with open('filename') as f:
    res = True
    for line in f:
        if line.startswith(' '):
            res = False
            break
return res
于 2013-10-27T08:53:33.673 に答える