これは、3 つのフィールドを持つ入力テキスト ファイルです。(説明、値、極性)
this is good
01
positive
this is bad
-01
negetive
this is ok
00
neutral
したがって、値フィールドに基づいてすべての説明を取得する必要があります。"This is good"
例:の if 条件をチェックしたときに印刷したい"01"
。それを行う方法はありますか。私に提案してください。
これは、3 つのフィールドを持つ入力テキスト ファイルです。(説明、値、極性)
this is good
01
positive
this is bad
-01
negetive
this is ok
00
neutral
したがって、値フィールドに基づいてすべての説明を取得する必要があります。"This is good"
例:の if 条件をチェックしたときに印刷したい"01"
。それを行う方法はありますか。私に提案してください。
grouper
からのレシピを使用してitertools
、3 行のチャンクでファイルを反復処理します。
>>> from itertools import izip_longest, imap
>>> def grouper(n, iterable, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
>>> with open('test.txt') as f:
d = dict((val, (desc, pol))
for desc, val, pol in grouper(3, imap(str.rstrip, f)))
>>> d['00']
('this is ok', 'neutral')
>>> d['00'][0]
'this is ok'
>>> d['01'][0]
'this is good'
注: Python 3 では代わりに normal を使用map
し (これはもはやインポートを必要としません)、izip_longest
現在はzip_longest