2013-05-08 53 views
0

說我有以下的解釋:python正則表達式*不是*字典中的東西*

d = {"word1":0, "word2":0} 

對於這個正則表達式,我需要驗證串一句話不在字典中的關鍵。

爲了正則表達式的目的,是否可以在字典中設置變量爲而不是

+2

「字符串中的一個字」??什麼字符串?你爲什麼不能通過加入字典的鍵來製作正則表達式,然後嘗試和匹配。如果匹配成功,那麼你的條件失敗了?我在你的問題中遺漏了一些暗示嗎? – Vorsprung 2013-05-08 09:14:00

+0

不,你必須將鍵轉換成可以被正則表達式工具使用的東西,或者只是逐個檢查,或者你可以將字符串拆分爲單詞並逐個檢查字典 – nhahtdh 2013-05-08 09:14:02

+1

請定義「單詞」。 – 2013-05-08 09:22:10

回答

1
>>> d = {"foo":0, "spam":0} 
>>> test = "This is a string with many words, including foo and bar" 
>>> any(word in d for word in test.split()) 
True 

如果標點符號是一個問題(例如,"This is foo."不會發現foo這種方法),既然你說了你的話是字母數字,你也可以使用

>>> import re 
>>> test = "This is foo." 
>>> any(word in d for word in re.findall("[A-Za-z0-9]+", test)) 
+1

雖然標點符號可能有問題。 – nhahtdh 2013-05-08 09:21:03

+1

@nhahtdh:你說得對,我們應該定義一個在這種情況下「單詞」的含義。要求OP澄清。 – 2013-05-08 09:22:47

2

忘記正則表達式在這種情況下:

test = "word1 word2 word3"  # your string 
words = test.split(' ')  # words in your string 
dict = {"word1":0, "word2":0} # your dict  
for word in words: 
    if word in dict: 
     print word, "is a key in dict" 
    else: 
     print word, "isn't a key in dict" 
+0

儘管如此,您仍然需要將字符串拆分爲單詞。什麼都不說,字符串只包含1個字 – nhahtdh 2013-05-08 09:15:22

+4

不要使用'dict'作爲變量名。 – 2013-05-08 09:17:12

+1

@TimPietzcker,它不是保留字,所以沒有什麼錯。我只是跟着這個例子。當然,最好避免這種情況。 – defuz 2013-05-08 09:19:27

相關問題