2014-03-03 122 views
0

我試圖找到一個字符串「爲」Python中找到一個特定的詞

str = 'foreign' 
re.findall(r'for', str) 

上面的代碼輸出[「爲」]這個詞相匹配,但是這不是我要找的。 也許我必須使用re.match,但我不確定。 任何幫助將不勝感激!

+0

你試圖找到如果單詞'for'是在一個較大的文本,或者如果* *整個字符串等爲' '?如果後者爲什麼不用'str =='來替換''? –

回答

4

使用\b,以紀念一些字的邊界。

In [782]: s = 'foreign, for fore' 

In [783]: re.findall(r'\bfor\b', s) 
Out[783]: ['for'] 

docs

\ b是斷言,當前位置位於字邊界

+0

但他說這不是他正在尋找的輸出。 –

+0

@JayanthKoushik:目前還不清楚* OP在尋找什麼。 –

+0

re.findall(r'\ bfor \ b',s) 完美的作品!謝謝! – Joseph

1

你只是想檢查字符串是否包含單詞或其中的一部分? 的Python的方式來做到這一點是:

In [15]: s = 'foreign, for fore' 

In [16]: 'for' in s 
Out[16]: True 
+0

對於'這對我來說都是陌生的'也是如此,但也可能是不正確的。 –

+0

這是他不清楚的一點,他是否想要確保整個單詞作爲一個單詞包含在句子中。 – asafm

0

你要得到一個布爾值? bool(re.findall(r'for', str))怎麼樣? (順便說一句,if聲明會隱含地這樣做,所以if re.findall(r'for', str):就可以)。

如果你不需要使用正則表達式,你也可以使用:'for' in str(它「返回」一個布爾值)。

+0

哇,謝謝! – Joseph

0

如果你堅持要用regex檢查,如果一個子串在一個字符串,請嘗試:

>>> import re 
# If input is a sentence 
>>> s = "foreign" 
>>> substr = r"for" 
>>> [i for i in s.split() if re.findall(substr,i)] 
['foreign'] 

>>> s = "forex is a foreign concept ." 
>>> [i for i in s.split() if re.findall(substr,i)] 
['forex', 'foreign'] 

# If input is a list of words 
>>> s = ['forex', 'is', 'a', 'foreign', 'concept', '.'] 
>>> [i for i in s if re.findall(substr,i)] 
['forex', 'foreign'] 

如果你想檢查一個子的存在,在一個字符串,返回字符串:

>>> s = "foreign" 
>>> substr = "for" 
>>> [i for i in s.split() if substr in s] 
['foreign'] 

如果你想檢查一個子的存在,在一個字符串,並返回一個布爾值:

>>> s = "foreign" 
>>> substr = "for" 
>>> substr in s 
True 
>>> "for" in "foreign" 
True 

當然,試圖去撫蟒蛇自然語言是不會工作:

>>> "for" in "foreign" 
True 
>>> is "for" in "foreign" ? 
    File "<stdin>", line 1 
    is "for" in "foreign" ? 
    ^
SyntaxError: invalid syntax 
相關問題