如果这篇文章很长,我很抱歉,但我会尽量详细。我对这个主题做了大量的研究,认为自己是一个“中级”熟练的程序员。
我的问题是:我有一个包含多行数据的文本文件。我想删除每一行的某些部分,以消除一些不相关的信息,然后用新格式化的行保存文件。
这是一个我正在努力实现的例子。最初的台词是这样的:
access-list inbound_outside1 line 165 extended permit tcp any host 209.143.156.200 eq www (hitcnt=10086645) 0x3eb90594
我试图让代码读取文本文件,并输出:
^{pr2}$以下代码有效,但仅当文本文件中只有一行时:
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]中没有任何内容。如果能帮上忙我会很感激的。
当你遇到无法处理的行时打印出一些内容
一些可能的原因:
您可以尝试
print
分别查看问题发生的位置:哦,有可能最后一行是空的。很容易错过。在
另一种方法是缓存所有行(假设文件不是很庞大)
相关问题 更多 >
编程相关推荐