2013-04-15 109 views
0

問題是我試圖匹配一個詞(任何一方的空格),如果它存在。Python:匹配一個單詞(用空格)

我有工作(至少大部分)的代碼是:

import re, os 

str1 = "the host offered $ rec*ting advice" 
str1 = re.sub('[*]', '(.*?)', str1) 
str1 = re.sub('[$]', '(.*?)', str1) 
str1 = str1.lower() 
print str1 
previous_dir = os.getcwd() 
os.chdir('testfilefolder') 
for filename in os.listdir('.'): 
    with open(filename) as f: 
     file_contents = f.read().lower() 
    output = re.search("%s" % str1, file_contents) 
    if output: 
     print (" Match found in " + filename)) 

因此,舉例來說,如果我有字符串"the host has offered some recruiting advice"並做字符串搜索將無法正常工作 - 由於美元符號(這是由(.*?)取代。有趣的是,如果我有"the host offered $ rec*ting advice" - 注意「一些」已經消失,因此這個作品 - 所以我可以匹配1個詞,如果它存在 - 看起來像(.*?)應該匹配一個字符,每個單詞至少有一個字符,所以我想這就是爲什麼它可行。我不確定(.*?)是否適合使用,但它是bes在我的研究結束後,我已經開始工作了。任何意見,將非常感激。注意上面我在文字中有(.*?),它似乎顯示(.*?)是某種標記,只是在(.*?)之間對字符串進行格式化。

但是我想匹配0或1個單詞。我發現了一些類似於\ bs + \ b的東西(我不太記得,但又找不到它),但無法讓它正常工作。我知道\ b應該匹配一個單詞可能存在的任何一邊的空字符串。

我appologize,如果這個問題被問到別處,但似乎我發現的一切(我仍然可以找到並能夠得到工作)正在尋找一個特定的詞 - 但我期待看到,如果只有0或1存在:

How do I match a word in a text file using python?

+0

我指的網頁示例是:http://stackoverflow.com/questions/5228448/how-do-i-match-a-word-in-a-text-file-using-python – Relative0

+0

'sub'的第二個參數是*替換*模式。任何與'[*]'(一個星號)匹配的內容都會被第二個字符串'(。*?)'替代,它只支持引用捕獲組的替換佔位符。 –

+2

你的問題很難理解。用兩邊的空格來匹配一個詞:'re。搜索('yourword',str1)'。這不符合你的要求? – MikeM

回答

0

你提的問題是很難理解,所以這是可能不是您要尋找什麼,但它可以幫助您在正確的方向。

如果你想找到的所有單詞,在這個文本是如何能夠做到:

import re 
str1 = "the host offered $ rec*ting advice" 
re.findall(r'\b\S+\b',str1) 

這將產生:

['the', 'host', 'offered', 'rec*ting', 'advice'] 

\b -thing在圖案不實際上是匹配一個字符,而是字符串中一個字開始或結束的位置(有關詳細信息,請參見http://docs.python.org/2/library/re)。

美元符號不被認爲是一個字,因爲它不是字符根據\b-使用的定義。

如果你想在一個字符串的第一個字,如果有一個詞有讓你可以使用:

re.findall(r'\b\S+\b',str1)[:1] 

你會再拿到零個或一個元素的列表!