You can flatten the list, might call this un-nesting and then search ...
def xflatten(seq):
"""a generator to flatten a nested list"""
for x in seq:
if type(x) is list:
for y in xflatten(x):
yield y
else:
yield x
nested_list = [1 ,'Dick', 2, ['Mary', 7, 9, [700, 777, 'Paul']], 13]
flat_list = list(xflatten(nested_list))
print flat_list # [1, 'Dick', 2, 'Mary', 7, 9, 700, 777, 'Paul', 13]
if 'Paul' in flat_list:
print "Found Paul in flat_list" # now it works!
If you are only searching, Ghostdog's solution is most elegant and can be simplified to ...
nested_list = [1 ,'Dick', 2, ['Mary', 7, 9, [700, 777, 'Paul']], 13]
nl_string = str(nested_list)
print nl_string # "[1, 'Dick', 2, ['Mary', 7, 9, [700, 777, 'Paul']], 13]"
if 'Paul' in nl_string:
print "Found Paul in the string" # works too!