2015-02-06 2 views
0

Мне нужно написать код в python, который будет читать все слова из текста, отменить их и найти, какие из них одинаковы в нормальном и обратном формате. До сих пор, Я сделал это:Обратный текст и найти те же слова - python

filename=raw_input("enter the file name: ") 
fop=open(filename) 
for line in fop: 
    words=line.split() 
li=[] 
li.extend(words) 
size=len(li) 
for i in range(0,size/2): 
    li[i], li[size-1-i] = li[size-1-i], li[i] 
`enter code here`''.join(li) 

но это Безразлично 'т работы, потому что, если я даю текст с более чем одной линии, он обрабатывает только последнюю строку и Безразлично «т на самом деле, кажется, реверс ничего , Помогите пожалуйста?

+0

У вас проблема с отступом, все строки после 'li = []' до ('for i in range (0, size/2):') должны находиться в одном и том же отступе с 'words = line.split()' – Kasramvd

+0

В принципе, вы хотите проверить наличие палиндромных строк в файле –

+3

Не исчез ли тег _homework_? – mshsayem

ответ

3

Вы можете просто сделать следующее, вы можете проверить на реверсе с word == word[::-1], что word[::-1] обратная индексация:

filename=raw_input("enter the file name: ") 
with open(filename) as f : 
    for line in f: 
     for word in line.split() : 
      if word == word[::-1]: 
       print word 
+0

Вам не нужно делать 'line.strip()' before '.split()', так как ['line.split()' будет обрезать эту строку, заканчивающуюся окончанием строки в любом случае] (https: //gist.github. ком/NotTheEconomist/4c1fc92fe062ad9d1a70). Отличный ответ! –

+0

@AdamSmith да, конечно, это так, что я сам не представляю, почему на Земле я это делаю !!!) Возможно, это из-за большого количества кодировок сегодня! – Kasramvd

+0

Я делаю то же самое все время - это просто привычка полосать линию, прежде чем действовать на ней! –

0

Если вы хотите напечатать только один раз палиндром слова, которые вы можете использовать set comprehension

print '\n'.join({w for w in open('file.txt).read().split() if w==w[::-1]}) 

Обратите внимание, что мой ответ не фильтрует ни одной буквы, пунктуации и т. Д., Другими словами, это зависит от свободного и широкого определения того, что является словом.

Смежные вопросы