2013-04-15 153 views
-1

這裏是我的三個字段的輸入文本文件。 (描述,數值,極性)如何使用python在文本文件中打印特定行

this is good 
01 
positive 
this is bad 
-01 
negetive 
this is ok 
00 
neutral 

所以我需要得到基於值字段的所有描述。例如:當我檢查"01"的條件時,我想打印"This is good"。有沒有辦法做到這一點。請建議我。

+0

訪問http://stackoverflow.com/questions/9073699/cant-print-a-specific-line-from-text-file可能重複的問題.. – 2013-04-15 06:13:06

+0

感謝您的回覆,我已驗證該鏈接,在th在文本文件。文本用':'分隔,但我的文本文件是不同的。但我試過這個代碼,它不適合我的要求。 –

+0

[DUPLICATE](http://stackoverflow.com/questions/16009161/how-do-i-use-a-specific-line-of-a-text-file-in-python) – KumarDharm

回答

0

使用從itertoolsgrouper配方通過在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使用正常map代替(其不再需要一個進口)和izip_longest是現在zip_longest

+0

謝謝,但我越來越(3,imap(str.rstrip,f))下面的錯誤「d = {val:(desc,pol)desc,val,pol」} ^ SyntaxError:invalid syntax「 –

+0

@VittalCherala Oh you're on Python <= 2.6?現在更新 – jamylak

+0

謝謝,我會更新它。 –

相關問題