Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import defaultdict as di
- from re import sub as r
- def all_palindromes(s):
- d1 = di(set)
- d2 = di(set)
- li = []
- with open(s) as f:
- for i in f:
- word = r("[ '\n]", '', i)
- word = word.lower()
- i = r("[\n]", '', i)
- if word in d2.keys():
- d2[i].add(i)
- continue
- d2[word].add(i)
- counter = 0
- while counter < len(word):
- w1 = word[counter:len(word)]
- counter +=1
- d1[w1].add(word)
- for i in d2.keys():
- '''if i[::-1] in d1.keys():
- for j in d1.get(i[::-1]):
- if str(i + j) == str(i + j)[::-1]:
- first, second = str(d2.get(i))[2:-2], str(d2.get(j))[2:-2]
- if first + ' ' + second not in li:
- li.append(first + ' ' + second)'''
- counter = len(i)
- reverse = 0
- while counter > 0:
- if i[reverse:len(i)] == i[reverse:len(i)][::-1] and i[0:counter][::-1] in d1.keys():
- for j in d1.get(i[0:counter][::-1]):
- if str(i + j) == str(i + j)[::-1]:
- first, second = str(d2.get(i))[2:-2], str(d2.get(j))[2:-2]
- if first + ' ' + second not in li:
- li.append(first + ' ' + second)
- counter -= 1
- reverse -= 1
- return li
- #print(all_palindromes('two words.txt'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement