我需要部分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
答案 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
。