到目前为止,我已经在这个网站上得到了很多帮助,我对Python编程非常陌生,并且自己进行了stackoverflow。
所以目前我有一个程序会提示用户输入一个关键字/字符串来搜索文本文档,并在该关键字之间打印出结果数据。但是,我的目标是:
我的问题是目前将这些多个输入传递到搜索功能的第一部分。
这是我当前代码的示例:
def process(infile, outfile, keywords):
keys = [ [k[0], k[1], 0] for k in keywords ]
endk = None
with open(infile, "rb") as fdin:
with open(outfile, "wb") as fdout:
for line in fdin:
if endk is not None:
fdout.write(line)
if line.find(endk) >= 0:
fdout.write("\n")
endk = None
else:
for k in keys:
index = line.find(k[0])
if index >= 0:
fdout.write(line[index + len(k[0]):].lstrip())
endk = k[1]
k[2] += 1
if endk is not None:
raise Exception(endk + " not found before end of file")
return keys
from Tkinter import *
import tkSimpleDialog
import tkMessageBox
from tkFileDialog import askopenfilename
import re
root = Tk()
w = Label(root, text ="Configuration Inspector")
w.pack()
tkMessageBox.showinfo("Welcome", "This is version 1.00 of Configuration Inspector ")
infile = askopenfilename() #
outfile = askopenfilename() #
start_token = tkSimpleDialog.askstring("Serial Number", "What is the device serial number?")
end_token = tkSimpleDialog.askstring("End Keyword", "What is the end keyword")
DATA_IN = start_token
Spilt_Start = start_token.split(' ')
process(infile,outfile,((Spilt_Start + ",SHOWALL",end_token),))
因此,此代码允许您选择要读取的文件,然后选择要写入的文件。在提示它将要求您输入一系列输入STARTKeywords以进行搜索之后,直到它到达ENDKeyword。
所以这个例子可以说我有这个文本文件:
unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data
unimportant data unimportant data **Start Keyword 1** something
data1
data2
data3
data4
data5
** ENDkeyword1 **
unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data
unimportant data unimportant data **Start Keyword 2** something
data1
data2
data3
data4
data5
Data6
** ENDkeyword2 **
unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data unimportant data
unimportant data unimportant data **Start Keyword 3** something
data1
data2
data3
data4
data5
data6
data7
data8
** ENDkeyword3 **
那么我们的输出目标就是:
something
data1
data2
data3
data4
data5
ENDkeyword1
something
data1
data2
data3
data4
data5
Data6
ENDkeyword2
something
data1
data2
data3
data4
data5
data6
data7
data8
ENDkeyword3
在我看来,这似乎是一个非常混乱的输入文件,但我需要在Start Keyword和End关键字之间的数据,所以我提示用户输入将被分隔和搜索的关键字。
StartKeyword1,StartKeyword2,StartKeyword3
现在很棒我会提示用户输入EndKeyword,以便程序知道何时停止写入数据并查找下一个关键字。
ENDKeyword1,ENDKeyword2,ENDKeyword3
很好,现在程序基本上有一个列表或关键字数组,现在我需要通过执行搜索方法的函数传递这些关键字。
在这种情况下是
def process(infile,outfile,keywords)
关键字有两个参数,分别是(startkeyword,endkeyword)
所以现在我已经知道如何使用这些关键字中的每一个执行此搜索功能一次。
或许我只是简单地使这个简单程序复杂化:/
结束问题:
如何使用多个分隔符获取输入并在文本文档中搜索这些分割字符串/关键字?
答案 0 :(得分:0)
我设法创建了一个for循环,以便遍历分隔符中的多个输入。
所以例如我的输入是
start_token = tkSimpleDialog.askstring("Serial Number", "What is the Serial?")
splitInput = start_token.split(' ') #Our Delimiter is space in this case
for inputStrings in splitInput:
process(infile,outfile,((inputStrings,"end token"),))
这样我可以有多个字符串输入,用空格或逗号分隔,然后通过一个函数传递它们,循环遍历输入字符串列表。