首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shlex.split -列表索引超出范围

shlex.split -列表索引超出范围
EN

Stack Overflow用户
提问于 2018-01-06 15:35:35
回答 1查看 114关注 0票数 0

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

组地址“不信任”这是一个测试组“

组地址“不信任”“这是一个测试组”添加“测试地址”

当我运行我的代码时,它会说"IndexError:列出超出范围的索引“。我意识到这是因为它不认识我的linetoken5。由于这两行的开头几乎相同,我如何才能使代码超出第一行而转到第二行。我现在的代码在下面。用户输入和计数用于输入区域,然后让它通过使用输入区域循环,但是,为了首先修复这个问题,我删除了大部分代码。

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-06 16:15:29

我想出了如何解决我的问题,所以我想我会发布解决方案。为了绕开第一行,我让它检查单词'add‘没有出现在行标记中。如果这是正确的,那么我添加了语句pass并继续到elif语句。下面是我的新代码。

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48128872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档