在python中包含异常
我在下面的/location/all-list-info.txt中有一个文件,我有以下方式的一些项目: aaa:xxx:abc.com:1857:xxx1:rel5t2:y ifa:yyy:xyz.com:1858:yyy1:rel5t2:y 我使用以下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
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'])