我在/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文件中存在或不存在的任何项目。
请让我知道上述代码有什么问题才能实现这一目标。
答案 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','')
列表中的。