shlex.list 索引超出范围



我目前正在尝试打开一个文件并使用shlex.split来分割行。下面是文本文件中 2 行的示例。

设置组地址"不信任"这是一个测试组">
设置组地址"不信任"这是一个测试组"添加"测试地址">

当我运行我的代码时,它说"索引错误:列出索引超出范围"。我确实意识到这是因为它无法识别我的行令牌[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()

我想出了我的问题的答案,所以我想我会发布解决方案。为了绕过第一行,我让它检查单词"添加"不在行令牌中。如果这是真的,那么我添加了语句 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()

相关内容

  • 没有找到相关文章

最新更新