0
下面的代码片段需要一个字符串(userstring)并搜索给定目录中的所有.txt和.log文件以进行匹配。但是,我添加了两个其他变量(userStrHEX & userStrASCII),其中我将该字符串转换为十六进制,并将ascii转换为对这些字符串格式搜索所有.txt和.log文件。目前,这些变量没有被使用。我正在考虑将这些变量添加到列表中,也许可以使用while循环遍历代码的该部分,直至列表中的项目数量。此外,我想我需要将列表中的每个项目分配给一个静态变量,每次迭代循环时......我卡住了!我将不胜感激。谢谢!我想了解如何搜索三种不同类型的字符串
def do_search(self, line):
print " Directory to be searched: c:\Python27 "
directory = os.path.join("c:\\","Python27")
userstring = raw_input("Enter a string name to search: ")
userStrHEX = userstring.encode('hex')
userStrASCII = ' '.join(str(ord(char)) for char in userstring)
for root,dirname, files in os.walk(directory):
for file in files:
if file.endswith(".log") or file.endswith(".txt"):
f=open(os.path.join(root, file))
for line in f.readlines():
if userstring in line:
print "file: " + os.path.join(root,file)
break
else:
print "String NOT Found!"
break
f.close()
我当时一看,但还是不太清楚再将如何解决我的问题。 – suffa 2011-04-27 12:07:03
最简单的方法是,您可以将正则表达式视为检查字符串是否在另一个字符串中的方式,就像您的“用户字符串在线”检查一样。使用re的等价物是“re.search(userstring,line)”。但是正则表达式可以做比检查文字字符串更多的功能。像+,。,\ w等字符串中的特殊字符可让您检查“一个或多个”,“任何字符”,“任何单词字符”。您也可以创建一个匹配“a”或“b”的正则表达式。请尝试以下操作: – froody 2011-04-27 16:06:22
呃,不能在此放置换行符。从互动模式尝试的东西:re.search(“a”,“foo”); re.search(“a”,“bar”); re.search(“o | a”,“foo”); re.search(“o | a”,“bar”)。 – froody 2011-04-27 16:07:48