Python:在文件中查找字符串

时间:2012-07-01 08:32:18

标签: python regex find

我的python脚本中有以下内容..

hostIP = sys.argv[1]
hostsFileLoc = "hosts.txt"

if not hostIP in open(hostsFileLoc).read():
    # Script to add if the string is not in file
else:
    # Print message

唯一的问题是它不是完全匹配,例如......

如果我的文件包含:

192.168.0.111

我的主机IP是:

192.168.0.11

然后它会发现它是匹配的。我以为我可以用正则表达式做到这一点,因为总会有一个空格("\s+")或一个逗号("\,")所以我想我可以使用像

这样的东西
test = re.compile("^" + hostIP + "[\s\,]*")

并使用test作为我的搜索,但这显然不起作用。我试图找到一些关于此的文档,但无济于事。有没有人建议我如何使用带有正则表达式的变量进行更具体的搜索。

由于

MHibbin

2 个答案:

答案 0 :(得分:3)

它不起作用的唯一原因是您在*中使用"[\s\,]*",这意味着“空格或逗号零或更多次”。因此它将与'192.168.0.111'匹配,因为它在11之后的空格为零。将*更改为+(“一次或多次”),它应该有效。

答案 1 :(得分:3)

您可以通过分隔符(例如空格)拆分文本文件,然后在列表中找到字符串:

if not hostIP in open(hostsFileLoc).read().split():
    # Script to add if the string is not in file
else:
    # Print message

如果您使用的不是空格,请将分隔符放入 split()