2015-03-15 5 views
1

Я пытаюсь прочитать текст из файла, а затем распечатать соответствующий шекспировский сонет с входа от пользователя. [если пользователь вводит 1, print sonnet 1 и т. д.].Копирование строк из текстового файла - удаление форматирования - Python

код у меня ниже функций, однако, я хотел бы ответы без всего форматирования

'def serve_poem(): 
    sonnet=open(r"C:\Users\Emily\Documents\sonnets.txt", "r") 
    x=int(input("Please enter a number 1-7:")) 
    s=sonnet.readlines() 
    s=list(s) 
    if x==1: 
     print(s[2:16]) 
    if x==2: 
     print(s[21:35]) 
    if x==3: 
     print(s[40:54]) 
    if x==4: 
     print(s[59:73]) 
    if x==5: 
     print(s[78:92]) 
    if x==6: 
     print(s[97:111]) 
    if x==7: 
     print(s[116:130]) 
    else: 
     print("The number you entered is not between 1-7. Please enter 1-7:") 
serve_poem()' 

(то есть мои доходы выглядеть следующим образом :)

«» «[» С прекрасные существа, которых мы желаем увеличить, \ n ', "То, что роза красоты никогда не умрет, \ n", "Но поскольку зрелая со временем может покончить, \ n', его нежный наследник может нести его память: \ n ', «Но ты сжал свои яркие глаза, \ n», «Подай пламя твоего света с самодостаточным топливом, \ n», «Создавая голод, где лежит изобилие, \ n», «Ты сам, твой враг, твоя сладкая я слишком жестока: \ n ', "Ты в искусстве в настоящее время свежий орнамент в мире, \ n "," И только вестник к яркой весне, \ n ',' В вашем собственном бутоне бушует ваше содержание, \ n ', "И, нежный churl, mak'st waste in niggarding : \ n ", 'Жаль мир, иначе это обжора будет, \ n'," Поесть в мире, под могилой и тобой. \ n "] '' '

(Вместо этого:)

«» 'Из прекраснейших существ мы желаем увеличения, Это, таким образом, роза красавицы никогда не может умереть, Но как Рипер должен по времени смерти, его нежный наследник может нести его память: Но ты заключил контракт на твой собственный яркие глаза, Подавать пламя вашего света с самодостаточным топливом, Создание голода, где изобилие лежит, Твоего врага сами твоего, к твоей сладкой себя слишком жестокий: ты, что искусство в настоящее время в мире свежего орнаментом, И только герольд к безвкусной весне, В пределах твоего бутона buriest содержания твоего, и, нежный грубиян, mak'st отходов в niggarding: Жалость мир, или же это обжора быть, кушать в мире должное, у могилы и тебя «»»

извиняюсь за длину, но. здесь оригинал текстового файла:

I.

Из прекраснейших существ мы желаем увеличения, Это, таким образом, роза красавицы никогда не может умереть, Но как Рипер должен по времени смерти, Его нежный наследник может нести его память: Но ты заключил контракт с твоими собственными яркими глазами, Feed'st пламя, свет твоего с самостоятельным существенным топливом, Создание голода, где изобилие лежит, твоего врага сами твоего, к твоей сладкой себя слишком жестокий: ты, что искусство в настоящее время в мире свежего орнаментом, И только вестником к безвкусной весне, В твоем собственном бутоне бурых твоих содержания, И, нежный churl, mak'st расточительство в поносе: Жаль миру, иначе это обжора будет, Жить в мире, по могиле и тебе.

II.

Когда сорок зим осадите твое чело, И рыть глубокие борозды в области красоты твоей, гордый наряд Твоего юноши так смотрело сейчас, Будет totter'd сорняк небольшой стоимости провела: Потом спрашивает, где вся твоя красота лежит, Где все сокровище твоих похотливых дней; Чтобы сказать, в твоих глубоких затонувших глазах, Были всепоглощающие стыда и беззаботная похвала. Сколько еще хвалы заслужили твоей красотой, Если бы ты мог ответить «Этот справедливый мой ребенок Суммируй мой счет и сделай мой старый повод, ' Доказав свою красоту последовательностью твоей! Это должно было быть новое, когда ты старый, И увидишь, что твоя кровь теплая, когда ты чувствуешь себя холодно.

III.

Посмотрите в свое стекло и скажите лицу, которое вы видите Теперь настало время, когда лицо должно образовать другое; Чьи свежий ремонт, если теперь не обновляешься, Ты обманываешь мир, не теряя матери. Ибо где она такая прекрасная, чья невнятная матка Уклоняется от обработки почвы? Или кто он такой любимый будет могилой Из его любви к себе, чтобы остановить потомство? Ты бокал твоей матери, и она в тебе Звонит прекрасный апрель ее премьер; Так ты через окна своего возраста увидишь, Несмотря на морщины, это твое золотое время. Но если вы живете, помните, что не должно быть, Умритесь, и ваше изображение умирает с тобой.

IV.

Необратимая красота, почему ты тратишь Наследие твоего твоей красоты? Завещание природы ничего не дает, но одалживает, И, будучи откровенным, она предоставляет их бесплатно: Тогда блаженнейший ниггер, почему ты злоупотребляешь Большую щедрость, данную тебе дать? Прибыльный ростовщик, почему ты пользуешься Столь большая сумма сумм, но не может жить? Для того, чтобы иметь движение с твоей собственной личностью, Ты сам по себе своей сладости себя обманываешь: Тогда как когда природа называет тебя, Какой приемлемый аудит ты можешь уйти? Твоя неиспользуемая красота должна быть уложена с тобой, Какой, используемый, живет исполнителем.

В.

те часы, что с нежным работы сделал кадр Прекрасный взгляд, где каждый глаз Станет ли жить, Сыграет тиранов в тот же И это несправедливо, которая довольно рассудите первенствует; В течение долгого времени ведет лето на К отвратительной зиме и путает его там; Sap проверен с морозом, и похотливыми листами совсем нет, красоты o'er-снежно и наготы, где каждый: Тогда были перегонка не лето оставила, Жидкие заключенный пент в стенах из стекла, эффект красоты с красотой взявший, Не он, и не помню, что это было: Но цветы дистиллированы, хотя они с зимой встречаются, Лиз, но их шоу; их вещество по-прежнему живет сладким.

VI.

Тогда пусть не оборвана рукава зимой, В тебе лето, прежде чем ты перегоняешь: Сделайте сладкий флакон; сокровище у вас какое-то место С сокровищем красоты, пока его не убьют. Это использование не запрещено ростовщичеством, Которые счастливы тем, кто платит желаемый кредит; Это для твоего, чтобы разводить другого, Или в десять раз счастливее, будь то десять за одного; Десять раз ваше «я» было счастливее, чем ты, Если десять из десяти раз переделали тебя: Тогда что могла быть смерть, если ты должен уйти, Оставив тебя жить в потомстве? Не будь своевольным, потому что ты слишком честен. Чтобы стать жертвой смерти, сделайте червей своим наследником.

VII.

Lo! в восточном, когда милостивый свет Поднимает свою горящую голову, каждый под глазом Отдает дань своему новому появлению зрелища, Служит со взглядами его святого величия; И Поднявшись на крутой вверх небесный холм, , напоминающую сильную молодежи в своем зрелом возрасте, же смертельные выглядит обожает его красоту еще, Присутствовавшие на свое золотом паломничестве: Но когда из highmost поля, с усталой машиной, Как слабый возраст, он возвращается со дня, Глаза, «передние желтые», теперь преобразованы в Из его низкого тракта, и выглядят по-другому: Итак, ты покидаешь свой полдень Не смотря на дист, если ты не получишь сына.

+0

Измените операторы печати на: 'print (''. Join (s []))' - например 'print (''. Join (s [2:16]))'. – jedwards

ответ

1

Проблема заключается в том, что вы печатаете список. Вы хотите печатать элементы списка. Поэтому вместо печати (s [2:16]) вы можете сделать: для г в диапазоне (2:17): печать (s [я])

Поскольку сонеты кажутся равномерно я бы тоже рекомендуем удалить ifs и выполнить функцию, которая возвращает правильный диапазон. Похоже, что это что-то вроде 2 + 14 * (sonnet_num - 1) до 2 + 14 * (sonnet_num - 1) + 14. Таким образом, вы можете иметь один оператор if, если число равно 1 < = n < = 7.

+0

Спасибо! Это была огромная помощь - я даже не думал конденсировать это! Сэкономил мой код много времени :) – Megan

0

Это было бы потому, что вы печатаете список строк, а не строку. Для того, чтобы этот список и включить его в строку, используйте join

' '.join(["Hi","I","am","Bob") 

бы произвести:

"Hi I am Bob" 

Потому что они включают в себя новые строки из readlines, вы хотите присоединиться на пустой строке ''.join(sonnet_lines).

Вы, вероятно, хотите иметь, что в вызове печати:

if x==1: 
    print(''.join(s[2:16])) 

Следует также отметить, что для построения строк, вы должны попытаться join списки, а не конкатенации их +.

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