在python中包含Exception

时间:2015-06-17 06:55:31

标签: python

我在/location/all-list-info.txt下面有一个文件,我有以下方式的一些项目:

  

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

     

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

我使用下面的python代码处理这些项目:

def pITEMName():

        global itemList
        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 = itemList.split('|')
        filepath = '/location/all-item-info.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])
                        del pipelst[index]

        for lns in pipelst:
            print lns,' is wrong item Name'

        f.close()
        if podList:

执行上面的python代码后,它会给出一个提示符:

  

输入管道分隔的ITEMS列表:

然后我传递了这些项目:

  

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

现在按下面进入上面的代码进程后进一步如下:

  

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

     

Total Distint项目数:3

     

IFA-MC错误的项目名称

     

GGG-MC错误的项目名称

     

属于其他中心的ITEM:

     

项目计数来自其他中心= 0

     

属于现有中心的ITEM:

     

US1中的有效项目:

     

^ IFA $

     

在US1中测试活动项目:

     

^ AAA $

     

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

     

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

     

Active Pod Count:2

我的问题是,如果我后缀为' -mc'在项目中,在给出输入时,它给出了我作为错误的项目,而它在/location/all-item-info.txt文件中显示,而不在/location/all-item-info.txt中显示该项目。请再看一下下面的输出:

  

IFA-MC错误的项目名称

     

GGG-MC错误的项目名称

在上面的示例中,如果'存在于/location/all-items-info.txt路径中,而ggg不存在。 请求您在这里帮助我,我可以对上面的代码做什么,所以如果我后缀/location/all-items-info.txt文件中的-mc,它不应该算作错误的项目名称。它应仅计入/location/all-items-info.txt文件中不存在的项目。

请给你帮助。

谢谢, 仅限Ritesh。

2 个答案:

答案 0 :(得分:0)

如果您还想避免检查-mc,那么您可以修改脚本的这一部分 -

pipelst = itemList.split('|')

到 -

pipelst = [i.split('-')[0] for i in itemList.split('|')]

答案 1 :(得分:0)

有点不清楚你究竟在问什么,但基本上忽略了任何' -mc'从用户输入,您可以显式预处理用户输入以将其删除:

pipelst = itemList.split('|')
pipelst = [item.rsplit('-mc',1)[0] for item in pipelst] 

如果你想要允许文件中含有-mc-suffixed字的可能性,只需将剥离的版本添加到列表而不是替换

pipelst = itemList.split('|')
for item in pipelist:
    if item.endswith('-mc'):
        pipelst.append(item.rsplit('-mc',1)[0])

另一个问题可能基于您从/location/all-list-info.txt提供的示例行,听起来所有项都是小写的。但是,pipelst明确地将用户输入全部大写。字符串相等性和in机制 区分大小写,例如

>>> print 'ifa-mc' in ['IFA-MC']
False

你可能想要:

itemList = str(raw_input('Enter pipe separated list of ITEMS : ')).lower().strip()

并且您只能在打印时或在需要的任何地方使用.upper()

最后,还有一些其他的东西可以通过代码进行调整,只是为了让事情变得更快更清洁。想到的主要问题是,似乎pipelst应该是python set而不是列表,因为检查包含和删除对于大型列表来说要快得多,以及从中删除项目的代码一套更清洁:

>>> desserts = set(['ice cream', 'cookies', 'cake'])
>>> if 'cake' in desserts:
...     desserts.remove('cake')
>>> print desserts
set(['cookies', 'ice cream'])