2016-12-16 55 views
0

基本上,我需要在python(和tk)中找到一行文本並將其複製,並且上面和下面的行它。我需要在python中找到一行文本並將其複製,並在其上方和下方的行

Imported_File = a long list of strings. 
One_Ring = the line I'm looking for. 

Find One_ring in Imported_File, Copy One_ring, the line above it and below it to Output_Var

我很堅持,任何幫助將是驚人的。

+0

歡迎來到Stack Overflow!你可以先參加[遊覽]並學習[問]一個很好的問題,然後創建一個[mcve]。這使我們更容易幫助你。 – Katie

回答

0

我假設你正在尋找確切的行

imported_file = ['a', 'b', 'c', 'd', 'e', 'f'] 

one_ring = 'd' 

if one_ring in imported_file: 
    i = imported_file.index(one_ring) 

    start = i-1 
    end = i+2 

    # problem with first element before "a" when `one_ring = 'a'` 
    if start < 0: 
     start = 0 

    output_var = imported_file[start:end] 

    print(output_var) 

else: 
    print('not found') 

BTW:使用lower_case名字varaibles:PEP 8 -- Style Guide for Python Code

+0

非常感謝!這已經成爲一個問題很多年了,它現在正在工作! – user7301596

+0

祝你奇妙的Code Kalma!朋友,謝謝! – user7301596

0

考慮你是從具有這些長長的清單文件中讀取的字符串。

with open('textFile.txt') as f: 
    Imported_File = f.readlines() 
    One_Ring = "This is the line\n" 
    Output_Var = "" 

    if One_Ring in Imported_File: 
    idx = Imported_File.index(One_Ring) 
    Output_Var = Imported_File[max(0, idx - 1):idx+2] 

    print(Output_Var) 

textFile.txt將是您的輸入文件。我創建了一個樣本文件,看起來像

Hello there 
How are you 
This is the line 
Done, Bye 
+0

非常感謝您的幫助!你是個明星! – user7301596

+0

如果你查找''你好,那麼''你可能會得到錯誤的結果,因爲'idx'爲'0','idx-1'爲'-1',所以你得到列表中的最後一個元素,完成,再見你好你好嗎?當你查找''完成,再見'時''因爲'[idx + 1]'給你錯誤''IndexError:列表索引超出範圍''' – furas

+0

顯然我沒有檢查轉角情況。只是想讓OP開始。更好地發佈正確的答案,而不是部分正確的答案。感謝您指出。 – KR29

相關問題