Advertisement
Guest User

Untitled

a guest
Dec 11th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. from collections import defaultdict as di
  2. from re import sub as r
  3.  
  4.  
  5. def all_palindromes(s):
  6. d1 = di(list)
  7. d2 = di(list)
  8. li = []
  9. with open(s) as f:
  10. for i in f:
  11. word = r("[ '\n]", '', i)
  12. word = word.lower()
  13. i = r("[\n]", '', i)
  14. d2[word].append(i)
  15. counter = 0
  16. while counter < len(word):
  17. w1 = word[counter:len(word)]
  18. counter += 1
  19. d1[w1].append(word)
  20. for i in d2.keys():
  21. '''if i[::-1] in d1.keys():
  22. for j in d1.get(i[::-1]):
  23. if str(i + j) == str(i + j)[::-1]:
  24. first, second = str(d2.get(i))[2:-2], str(d2.get(j))[2:-2]
  25. if first + ' ' + second not in li:
  26. li.append(first + ' ' + second)'''
  27. counter = len(i)
  28. reverse = 0
  29. while counter > 0:
  30. if i[reverse:len(i)].lower() == i[reverse:len(i)][::-1].lower() and i[0:counter][::-1] in d1.keys():
  31. for j in d1.get(i[0:counter][::-1]):
  32. if str(i + j).lower() == str(i + j)[::-1].lower():
  33. first, second = str(d2.get(i))[2:-2], str(d2.get(j))[2:-2]
  34. for fi in d2.get(i):
  35. for se in d2.get(j):
  36. #print(fi + se)
  37. if fi + ' ' + se not in li:
  38. #print(first + ' ' + second)
  39. li.append(fi + ' ' + se)
  40. counter -= 1
  41. reverse -= 1
  42. #print(len(d1.get('z')))
  43. return li
  44.  
  45. #print(all_palindromes('two words.txt'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement