我目前正在尝试打开文件并使用shlex.split对行进行分段。以下是文本文件中2行的示例。
设置群组地址" Untrust" "这是一个测试组"
设置群组地址" Untrust" "这是一个测试组"添加"测试地址"
当我运行我的代码时,它会说" IndexError:列表索引超出范围"。我确实意识到这是因为它没有认识到我的线索[5]。由于两条线的开始几乎完全相同,我如何让代码移出第一行,然后转到第二行。我目前的代码如下。用户输入和计数用于输入区域,然后使用输入区域循环,但是,我首先删除了大部分代码以尝试解决此问题。
import shlex
import sys
def main():
zone = []
zone = raw_input(str('enter zones: '))
zone = shlex.split(zone)
count = 0
configfile = open('convert.txt','r')
for configline in configfile:
with open('converted.txt','a')
linetoken = shlex.split(configline)
if(linetoken[0]=='set' and linetoken[1]=='group' and linetoken[5]=='add'):
converted.write(linetoken[0] +' ' +linetoken[1] +' ' +linetoken[2] +' ' +linetoken[3] +' ' +linetoken[4] +' ' +linetoken[5])
break
main()
答案 0 :(得分:0)
我想出了问题的答案,所以我想我会发布解决方案。为了绕过第一行,我检查了“add”这个词是不是在linetoken中。如果这是真的,那么我添加了语句pass并继续使用elif语句。以下是我的新代码。
import shlex
import sys
def main():
zone = []
zone = raw_input(str('enter zones: '))
zone = shlex.split(zone)
count = 0
configfile = open('convert.txt','r')
for configline in configfile:
with open('converted.txt','a')
linetoken = shlex.split(configline)
if(linetoken[0]=='set' and linetoken[1]=='group' and 'add' not in linetoken):
pass
elif(linetoken[0]=='set' and linetoken[1]=='group' and linetoken[5]=='add'):
converted.write(linetoken[0] +' ' +linetoken[1] +' ' +linetoken[2] +' ' +linetoken[3] +' ' +linetoken[4] +' ' +linetoken[5])
break
main()