在python中包含异常

在python中包含异常,python,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 IT

我在下面的/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代码后,its会给出提示,如下所示:

输入以管道分隔的项目列表:

然后我传递这些项目:

输入单独的项目列表:aaa | ifa mc | ggg mc

现在,按enter键后,上述代码处理如下:

输入单独的项目列表:aaa | ifa mc | ggg mc

Distint项目总数:3

IFA-MC项目名称错误

GGG-MC是错误的项目名称

属于其他中心的物品:

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

属于当前中心的项目:

US1中的活动项:

^IFA$

在US1中测试活动项:

^AAA$

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

您已将属于此中心的项目列表输入为:^IFA$| ^AAA$

有效吊舱数:2

我的问题是,如果我在items中添加“-mc”后缀,同时将其作为错误的项提供给输入,而它在/location/all-item-info.txt文件中显示,而在/location/all-item-info.txt中不显示该项。请再次查看以下输出:

IFA-MC项目名称错误

GGG-MC是错误的项目名称

在上面的示例中,/location/all-items-info.txt路径中存在“ifa”,而as ggg不存在。 请您在此帮助我如何处理上述代码,以便如果我在/location/all-items-info.txt文件中添加-mc后缀,则不应将其视为错误的项目名称。它应该只计算那些不在/location/all-items-info.txt文件中的项目

请给你帮助

谢谢,
Ritesh。

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

pipelst = itemList.split('|')
到-


有点不清楚您到底在问什么,但基本上忽略用户输入中的任何'-mc',您可以显式地预处理用户输入以将其去掉:

pipelst = itemList.split('|')
pipelst = [item.rsplit('-mc',1)[0] for item in pipelst] 
如果您想在文件中也允许使用-mc后缀,只需将剥离版本添加到列表中,而不是替换

pipelst = itemList.split('|')
for item in pipelist:
    if item.endswith('-mc'):
        pipelst.append(item.rsplit('-mc',1)[0])
另一个问题可能是基于您在
/location/all list info.txt
中给出的示例行,听起来所有项目都是小写的。但是,
pipelst
显式地让用户输入全大写。字符串相等和机制中的
是区分大小写的,例如

>>> print 'ifa-mc' in ['IFA-MC']
False
您可能想要:

itemList = str(raw_input('Enter pipe separated list of ITEMS : ')).lower().strip()
而且,您只能在打印时或需要时使用
.upper()

最后,还有一些其他的东西可以通过代码进行调整,使事情变得更快更干净。我想到的主要问题是,
pipelst
似乎应该是一个列表,而不是一个列表,因为对于大型列表,检查包含和删除会更快,并且从集合中删除项目的代码更干净:

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

ifa mc
是否明确出现在
all items info.txt
中?如果不是因为这个原因,您没有从列表中删除-mc以仅检查
ifa
,是否要求仅检查
ifa
而不是
ifa mc
?并且,我需要同时检查ifa和ifa mc,如果文件中有ifa,则不应显示ifa-MC是错误的项目。嗨,Lemonhead,我在附加第二个代码时没有任何区别。例如,我想要与您在2ns声明中提到的相同的代码。我想给ifa或ifa mc,它应该显示为错误的项目,而ggg或ggg mc应该显示为错误的项目(因为文件中不存在)。请再次查看。非常感谢。它对我有用。我只是想避免-mc。如果你只是想避免
-mc
,那么在上面的代码中不要使用
I.split('-')
,而是使用-
I.split('-mc')
,谢谢。您在上述代码中给出了95%的提示。所以我已经按照你刚才提到的那样做了。现在可以工作了:)
>>> desserts = set(['ice cream', 'cookies', 'cake'])
>>> if 'cake' in desserts:
...     desserts.remove('cake')
>>> print desserts
set(['cookies', 'ice cream'])