我在/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。
答案 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'])