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(list)
- d2 = di(list)
- li = []
- with open(s) as f:
- for i in f:
- word = r("[ '\n]", '', i)
- word = word.lower()
- i = r("[\n]", '', i)
- d2[word].append(i)
- counter = 0
- while counter < len(word):
- w1 = word[counter:len(word)]
- counter += 1
- d1[w1].append(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)].lower() == i[reverse:len(i)][::-1].lower() and i[0:counter][::-1] in d1.keys():
- for j in d1.get(i[0:counter][::-1]):
- if str(i + j).lower() == str(i + j)[::-1].lower():
- first, second = str(d2.get(i))[2:-2], str(d2.get(j))[2:-2]
- for fi in d2.get(i):
- for se in d2.get(j):
- #print(fi + se)
- if fi + ' ' + se not in li:
- #print(first + ' ' + second)
- li.append(fi + ' ' + se)
- counter -= 1
- reverse -= 1
- #print(len(d1.get('z')))
- return li
- #print(all_palindromes('two words.txt'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement