some1
some1

Reputation: 1747

Python regex for something *not* in a dictionary?

Say I have the following dictionary:

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

For this regex I need to verify that a word in the string isn't a key in that dictionary.

Is it possible to set a variable to anything not in a dictionary, for the purposes of a regex?

Upvotes: 0

Views: 105

Answers (2)

Tim Pietzcker
Tim Pietzcker

Reputation: 336498

>>> 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

If punctuation is a problem (for example, "This is foo." would not find foo with this approach), and since you said all your words are alphanumeric, you could also use

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

Upvotes: 1

defuz
defuz

Reputation: 27621

Forget about regex in this case:

 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"

Upvotes: 2

Related Questions