How to resolve two slightly different names of same product (mobile phone) in program?
You could use different approaches for this (and for most efficiency mix them):

You could ignore everythin that is in parenthesis.
Define words you automatically drop like "black", "blue" or "white".
Compare the names via their Levenshtein distance and use this distance for clustering.
Surface similarity (thanks to mbatchkarov)
I am working on a web app where I collect data about mobile phones from several websites. The problem is that websites use slightly different naming of mobile phones. For eg the websites use the following variation in names for these two mobiles:
HTC One X+ (Black); HTC One X+ Black; HTC One X Plus; HTC One X Plus,  black
Samsung Galaxy S3 (Pebble Blue, with  16GB); Samsung Galaxy S III (Blue); Samsung Galaxy S3 I9300 16GB Pebble Blue; Samsung I9300 Galaxy S III (16 GB); Samsung Galaxy S3 (I9300),  pebble blue
Since I read this data off these websites using a crawler I need my program to resolve all these different strings into same product.
Any ideas? 
If it matters, I am using python.