我很抱歉,如果這個職位是漫長的,但我想是儘可能詳細。我對這個主題進行了大量的研究,並認爲自己是一個「中級」熟練的程序員。的Python:重新格式化多行文本文件
我的問題:我有一個多行數據的文本文件。我想刪除每行的某些部分以努力擺脫一些不相關的信息,然後用新格式化的行保存該文件。
這裏是什麼,我試圖完成一個例子。原線是一樣的東西:
access-list inbound_outside1 line 165 extended permit tcp any host 209.143.156.200 eq www (hitcnt=10086645) 0x3eb90594
我想有代碼讀取文本文件,輸出:
permit tcp any 209.143.156.200 www
下面的代碼工作,但前提是在單行文本文件:
input_file = open("ConfigInput.txt", "r")
output_file = open("ConfigOutput.txt", "w")
for line in input_file:
line = line.split("extended ", 1)[1]
line = line.split("(", 1)[0]
line = line.replace(" host", "")
line = line.replace(" eq", "")
output_file.write(line)
output_file.close()
input_file.close()
然而,當我嘗試使用的多行數據進行完整的文件運行此,我收到一個錯誤:
File "C:\Python27\asaReader", line 5, in <module>
line = line.split("extended ", 1)[1]
IndexError: list index out of range
,我懷疑這是不是移動到數據的文本文件的下一行,因此沒有在[1]的以前的字符串什麼。我將不勝感激任何幫助。
每行包含單詞「extended」,文本文件中沒有空白行。它具有非常一致的格式。 – user1650583
@ user1650583你能嘗試添加我只是編輯的打印語句,讓我們知道哪一行導致錯誤? –
我剛剛完成了換行符的搜索功能,並在我的文件末尾找到了一個。這已經解決了這個問題(我在寫這篇文章時口頭讚美你)。 我不知道會拋出一個錯誤,但無論哪種方式,你有固定我的問題。非常感謝您的快速回復,因爲我現在可以繼續我的夜晚! – user1650583