python搜索功能不起作用

时间:2015-02-03 12:55:23

标签: python

我需要部分python代码的帮助。我有搜索功能,它将在文件中搜索字符串,如果找到则返回它,或者如果找不到则给出错误对话框。此外,在关闭“错误”对话框后,授予用户输入正确值的权限。我没有把整个代码,但基本上/ tmp / ARNE / final1文件看起来像:

siu43543, RTWAURT
siu34544, RYAKCCD

如果用户输入名称例如siu43543,它将重新计算RTWAURT,或者给出错误对话框,并等待正确的值。所以我的函数需要给出错误对话框,或者如果找到则给出值。

def search(VAR,VAR1):
    global linese
    global linese1
    with open("/tmp/ARNE/final1", 'r') as file:
       for line in file:
              var=re.search(VAR, line)
              if var:
                  linese = line.split(',')[0]
              else:
                  tkMessageBox.showinfo("ERROR", "MISSING ELEMENT") 
                  return Exception 

              var11=re.search(VAR1, line)
              if var1:
                  linese1 = line.split(',')[1] 
              else: 
                  tkMessageBox.showinfo("ERROR", "MISSING PARENT")
                  return Exception      
    return linese
    return linese1 

try:
    search(line1,line1) 
except Exception:
    break 

2 个答案:

答案 0 :(得分:1)

如果文件始终相同则无需将open file命令放入函数中。 python的强大之处在于数组,因此我想将所有文件读入数组,而不是搜索数组元素:

D1=[]
D2=[]
with open("/tmp/ARNE/final1", 'r') as file:
    for line in file:
        i,j=line.split(",")
        D1.append(i)
        D2.append(j)
def var_search(VAR,VAR1):
    if VAR in D1:
        ....
    if VAR1 in D2:
        ....

答案 1 :(得分:0)

假设您的其他代码都没问题,那么我认为行linese = line.split(',')[0]linese1 = line.split(',')[1]正在解决问题。当您需要return文件,中的/tmp/ARNE/final1之后的单词时,以下内容应该可以胜任。

如果是var

linese = line.split()[1]
return linese #This will return `RTWAURT` if condition is satisfied

同样适用于var1

linese1 = line.split()[1]
return liense1 #This will return `RYAKCCD` if condition is satisfied 

以下是示例:

line = "siu43543, RTWAURT"

现在使用split逗号(,)上的代码,您将获得index 0的值,即line.split(',')[0],我们有:

>>> line.split(',')[0]
'siu43543'

这不是你想要的。

现在使用我所使用的split对任何空格字符(默认行为),我们感兴趣的是index 1的值,即line.split()[1]

>>> line.split()[1]
'RTWAURT'

您想要return