2012-07-01 50 views
1

字符串我已經在我的python腳本如下..的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\,]*") 

,並使用測試作爲我的搜索,但是這顯然不不行。我試圖找到一些這方面的文件,但無濟於事。有沒有人建議我如何使用正則表達式的變量進行更具體的搜索。

感謝

MHibbin

回答

3

您可以通過分隔符(空格例如)劃分的文本文件,然後找到字符串列表:

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

把你的分隔符爲分裂()如果使用非空格等

3

它不工作的唯一原因是,你在"[\s\,]*"使用*,意思是「空格或逗號零個或多個倍」。因此它將匹配'192.168.0.111',因爲它在11之後沒有空格。將*更改爲+(「一次或多次」),它應該可以工作。

+0

謝謝,出於某種原因,我認爲「+」意味着它至少需要一個空格和一個逗號......思路不正確。 但是我已經在另一個答案中使用了拆分方法,因爲它是先發布的,並且符合我的需求。 雖然我會記住這一點,謝謝你的迴應。 – MHibbin