2016-11-15 92 views
1

我了解以下大多数代码以及它的作用,除了if re.search(str(searchString), line) != None:行之外 - 它接近底部。需要Python CGI/RE帮助

的代码接受另一个HTML形式由用户的字符串的输入,然后该Python脚本运行以检查文件,如果输入的字符串/单词是在该文件中,然后打印所有行与在该单词。

import cgi, re 

print ('Content-type: text/html \n') 
print ('<html>') 
print ('<head>') 
print ('<title>Web Client Server File Search Example </title>') 
print ('</head>') 
print ('<body>') 
print ("<H1>Search Text Example </H1>") 

form = cgi.FieldStorage() 
searchString = form.getvalue('search') 
print("<br><H2 style='color:red;'> Search String: ", searchString) 
fh = open("animals.txt") 
fhdatalist = fh.readlines() 

for line in fhdatalist: 
    line = line.rstrip() 
    if re.search(str(searchString), line) != None: 
     print ('<br>Line Found: ', line) 

fh.close() 

有人可以简单解释一下它/ search()的工作原理吗?

回答

0
searchString = form.getvalue('search') 

如果搜索词在该行发现此行发生在一个表单中输入的HTML页面

if re.search(str(searchString), line) != None: 

此行发生在animals.txt文件,并检查各行搜索值。如果找到了,则从animals.txt中打印出该行。

re是python正则表达式解析器,它非常强大,你应该检查它!

Python2.7:https://docs.python.org/2/library/re.html

Python3.5:https://docs.python.org/3/library/re.html

======

而现在,警告的话。您正在让网页的查看者直接与您的代码进行交互。如果我搜索以下条款会怎样?尝试一下,看看会发生什么:

.* 
* 
+0

好的,谢谢!我认为这更有意义。那么什么是'!= None:'部分呢? –

+0

当re.search函数找到匹配项时,它会返回一个匹配对象,您可以从中获取信息。如果没有找到任何内容,则返回'None'。 因此,该行在说“如果re.search函数的返回值不等于'None',则从文件中打印出行 这是一个轻微的错误 - 您可能想将行更改为'如果re.search(str(searchString),line)不是None:'你的作业就是找出原因;} –

+0

有趣的是,我的导师实际上写了这些代码......所以我认为他已经做对了!把它当作'不是无'可以让现在更容易理解,非常感谢! –