不包括

时间:2015-07-13 20:39:39

标签: python

我在/location/data.txt有一个文件。在这个文件中我有如下条目:

  

AAA:XXX:abc.com:1857:XXX1:rel5t2:Y

     

IFA:YYY:xyz.com:1858:yyy1:rel5t2:Y

我想从我的代码中访问'aaa'或者我提到aaa,同时在运行我的python代码后给出输入大小或小,它应该返回我aaa是正确的项目 但是在这里我想要包含一个例外,如果我在小后者或大写字母中给出带-mc后缀(aaa-mc)的输入,它应该忽略-mc。 下面是我现在得到的代码和输出。

def pITEMName():

    global ITEMList,fITEMList
    pITEMList = []
    fITEMList = []
    ITEMList = str(raw_input('Enter pipe separated list of ITEMS : ')).upper().strip()
    items = ITEMList.split("|")
    count = len(items)
    print  'Total Distint ITEM Count : ',  count
    pipelst = [i.split('-mc')[0] for i in ITEMList.split('|')]
    filepath = '/location/data.txt'
    f = open(filepath, 'r')
    for lns in f:
            split_pipe = lns.split(':', 1)
            if split_pipe[0] in pipelst:
                    index = pipelst.index(split_pipe[0])
                    pITEMList=split_pipe[0]+"|"
                    fITEMList.append(pITEMList)
                    del pipelst[index]
    for lns in pipelst:
        print bcolors.red + lns,' is wrong ITEM Name' + bcolors.ENDC
    f.close()

当我执行上面的代码时,它会提示我:

  

输入管道分隔的ITEMS列表:

如果我提供的列表如下:

  

输入管道分隔的ITEMS列表:aaa-mc | ifa

它给我结果如下:

  

Total Distint项目数:2

     

AAA-MC是错误的项目名称

     

属于他人的项目:

     

其他中心:

     

项目从其他中心计数= 0

     

属于当前中心的项目:

     

US1中的有效项目:

     

^ IFA $

     

US2中的有效项目:

     

^ AAA $

     

忽略项目从当前中心计数= 0

     

您已将属于此中心的itemList输入为:^ IFA $ | ^ AAA $

     

有效项目数:2

     

您想继续[YES | Y | NO | N]:

正如您必须在上面的结果中看到的那样,aaa将作为有效计数(活动项目数:2),因为它在/location/data.txt文件中可用。但它的出现也因为AAA-MC是错误的项目名称(从上面的结果第2行)。我希望'-mc或-MC'忽略/location/data.txt文件中存在或不存在的任何项目。

请让我知道上述代码有什么问题才能实现这一目标。

2 个答案:

答案 0 :(得分:2)

您遇到的问题是您的代码希望"-mc"后缀以小写字母显示,但您在输入字符串上调用upper()方法,从而导致文本全部显示在上面案件。你需要更改其中一个以便它们匹配(这并不重要)。

upper()来电替换为lower(),或将字符"-mc"替换为"-MC",您的代码应该更好用(我不确定我理解所有它,所以可能还有其他问题。)

答案 1 :(得分:0)

构建ITEMList的方法是通过读取字符串,将其大写(使用upper())并剥离所有空格。因此,'aaa-mc'之类的内容正在转换为'AAA-MC'。您之后将此大写字符串拆分为令牌' -mc',这是不可能包含的,所以。

我在您正在阅读您的字符串时,或者在upper()的类型上进行硬替换时,要么将lower()替换为'-mc',而不是

i.split('-mc')[0]

尝试使用

i.replace('-mc','').replace('-MC','')
列表中的