Although WordNet is a good resource to start for finding synonym, one must note its limitations, here's an example with python API in NLTK
library:
Firstly, words have multiple meanings (i.e. senses):
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('nice')
[Synset('nice.n.01'), Synset('nice.a.01'), Synset('decent.s.01'), Synset('nice.s.03'), Synset('dainty.s.04'), Synset('courteous.s.01')]
And to access the correct sense of a word, you will need to know the correct sense of a word given a context.
>>> wn.synset('nice.a.01').definition()
u'pleasant or pleasing or agreeable in nature or appearance'
You can try Word Sense Disambiguation software but they are not perfect (see Anyone know of some good Word Sense Disambiguation software?). Even if you know the sense of the word, the entries of wordnet are limited. You cannot expect much:
>>> wn.synset('nice.a.01').lemma_names()
[u'nice']
>>> wn.synset('nice.a.01').similar_tos()
[Synset('good.s.06'), Synset('pleasant.s.02')]
>>> [i.lemma_names() for i in wn.synset('nice.a.01').similar_tos()]
[[u'good'], [u'pleasant']]