将输入字符串拆分为搜索文本文件的函数
Splitting input string into a function to search text file
到目前为止,我在这个网站上得到了很多帮助,我对 Python 编程和 Whosebug 还很陌生。
所以目前我有一个程序会提示用户输入 keyword/string 来搜索文本文档并打印出该关键字之间的结果数据。然而,我的目标是:
- 允许用户在一个输入提示中输入多个关键字(关键字将由分隔符分隔,例如 ,;' ./ 等
- 然后程序将搜索这些关键字并打印它们之间的内容,我们将在 重要数据
之间调用此数据
- 然后它会将这个重要数据打印到一个新的文本文件中供用户阅读。
我的问题目前是将这些多个输入传递到搜索函数的第一部分。
当前代码:
这是我当前代码的示例:
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
关于如何解决这个问题的个人想法:
在我看来,这像是一个非常混乱的输入文件,但我需要那些开始关键字和结束关键字之间的数据,所以我提示用户输入将被分离和搜索的关键字。
StartKeyword1, StartKeyword2, StartKeyword3
太棒了,现在我要提示用户输入 EndKeyword,这样程序就知道什么时候停止写入数据并寻找下一个关键字。
ENDKeyword1, ENDKeyword2, ENDKeyword3
太好了,现在程序基本上有一个关键字列表或数组,现在我需要通过执行搜索方法的函数传递这些关键字。
在这种情况下是
def process(infile, outfile, keywords)
keywords 有两个参数,它们是 (startkeyword, endkeyword)
所以现在我有了这个,我如何能够对这些关键字中的每一个执行一次这个搜索功能。
或者我只是把这个简单的程序复杂化了:/
所以最后一题:
如何抓取带有多个分隔符的输入并在文本文档中搜索拆分的 strings/keywords?
我设法创建了一个 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"),))
通过这种方式,我可以有多个字符串输入,这些输入由 space 或逗号分隔,然后使用循环将它们传递给函数以循环遍历输入字符串列表。
到目前为止,我在这个网站上得到了很多帮助,我对 Python 编程和 Whosebug 还很陌生。
所以目前我有一个程序会提示用户输入 keyword/string 来搜索文本文档并打印出该关键字之间的结果数据。然而,我的目标是:
- 允许用户在一个输入提示中输入多个关键字(关键字将由分隔符分隔,例如 ,;' ./ 等
- 然后程序将搜索这些关键字并打印它们之间的内容,我们将在 重要数据 之间调用此数据
- 然后它会将这个重要数据打印到一个新的文本文件中供用户阅读。
我的问题目前是将这些多个输入传递到搜索函数的第一部分。
当前代码:
这是我当前代码的示例:
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
关于如何解决这个问题的个人想法:
在我看来,这像是一个非常混乱的输入文件,但我需要那些开始关键字和结束关键字之间的数据,所以我提示用户输入将被分离和搜索的关键字。
StartKeyword1, StartKeyword2, StartKeyword3
太棒了,现在我要提示用户输入 EndKeyword,这样程序就知道什么时候停止写入数据并寻找下一个关键字。
ENDKeyword1, ENDKeyword2, ENDKeyword3
太好了,现在程序基本上有一个关键字列表或数组,现在我需要通过执行搜索方法的函数传递这些关键字。
在这种情况下是
def process(infile, outfile, keywords)
keywords 有两个参数,它们是 (startkeyword, endkeyword)
所以现在我有了这个,我如何能够对这些关键字中的每一个执行一次这个搜索功能。
或者我只是把这个简单的程序复杂化了:/
所以最后一题:
如何抓取带有多个分隔符的输入并在文本文档中搜索拆分的 strings/keywords?
我设法创建了一个 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"),))
通过这种方式,我可以有多个字符串输入,这些输入由 space 或逗号分隔,然后使用循环将它们传递给函数以循环遍历输入字符串列表。