从文本文件中复制行 - 删除格式化 - Python

时间:2015-03-15 07:30:43

标签: python file formatting format

我正在尝试从文件中读取文本,然后根据用户的输入打印出相应的莎士比亚十四行诗。 [如果用户输入1,打印十四行诗1等]。

我在下面的代码功能,但是,我希望答案没有所有格式

'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的浪费在niggarding:\ n",'可怜的世界,或者这个贪食者,\ n',"要通过坟墓和你来吃掉这个世界。\ n"]'''

(而不是像这样:)

'''''''''''&  因此,美丽的玫瑰可能永远不会死,  但随着时间的推移,应该逐渐减少,  他温柔的继承人可能会记住他的记忆:  但是你收缩了自己明亮的眼睛,  用自给自足的燃料喂你的光火焰,  在丰富的地方制造饥荒,  你自己的敌人,你的甜蜜自我太残忍了:  你那艺术现在是世界上最新鲜的装饰品,  只有这个华丽的春天,  在你自己最萌芽的内容中,  并且,招致churl,mak的浪费在niggarding:  可怜世界,否则这个贪食者,  要通过坟墓和你来吃掉这个世界。'''

我为长度道歉,但这是原始文本文件:

我们渴望增加最公平的生物,  因此,美丽的玫瑰可能永远不会死,  但随着时间的推移,应该逐渐减少,  他温柔的继承人可能会记住他的记忆:  但是你收缩了自己明亮的眼睛,  用自给自足的燃料喂你的光火焰,  在丰富的地方制造饥荒,  你自己的敌人,你的甜蜜自我太残忍了:  你那艺术现在是世界上最新鲜的装饰品,  只有这个华丽的春天,  在你自己最萌芽的内容中,  并且,招致churl,mak的浪费在niggarding:  可怜世界,否则这个贪食者,  要通过坟墓和你来吃世界。

II。

当四十个冬天围困你的额头时,  在你美丽的田野挖掘深壕,  这个年轻人骄傲的制服现在如此凝视,  将是一个小小的价值的杂草:  然后被问到,你的美丽在哪里,  你渴望的日子里所有的宝藏;  要说,在你自己深陷的沉没的眼睛里,  是一个吃饱的羞耻和无尽的赞美。  还有多少赞美和你的美丽使用,  如果你能回答我这个公平的孩子  应该算上我的数,并找出我的旧借口,'  你的继承证明了他的美丽!  当你老了,这是新的,  当你感到寒冷时,看到你的血液温暖。

III。

看着你的杯子,告诉你看到的脸  现在是面孔应该形成另一个面孔的时候了;  如果你现在没有重新修复谁的新修复,  你欺骗世界,让一些母亲失业。  在哪里,她是如此公平,他的无情的子宫  鄙视你的耕作的耕作?  或者他如此喜欢谁将成为坟墓  他的自爱,要阻止后人?  你是你母亲的玻璃,她在你里面  召回她巅峰时期的可爱四月;  所以,你通过你的年龄窗口,看到,  尽管有皱纹,这是你的黄金时间。  但如果你活着,记得不是,  死亡的单身和你的形象随着你而死亡。

IV

不可思议的可爱,为什么你要花钱  在你自己的美丽遗产?  大自然的遗赠什么都没有,但是他们放弃了,  坦率地说,她借给那些免费的人:  然后,美丽的吝啬,为什么你滥用  给你的宽大的慷慨捐赠?  无利可图的高利贷者,为什么要使用  如此巨大的总和,却无法生存?  因为独自拥有交通,  你的自我,你的甜蜜自我欺骗了:  然后大自然怎么称呼你走了,  你可以接受哪种可接受的审计?  你未使用的美女必须与你同在,  哪个,用过,生活在'遗嘱执行人。

那些时间,温柔的工作确实构成了框架  每个眼睛都住的可爱的目光,  将暴君打得一样  这种不公平的东西相当出色;  因为永不休息的时间导致夏天  到了可怕的冬天,让他感到困惑;  用霜冻检查闷棍,强烈的叶子完全消失,  美女在每个地方下雪和裸露:  那不是夏天的蒸馏,  一个液体囚犯被压在玻璃墙上,  美丽的美丽效果是失去的,  也不是,也不是没有纪念它是什么:  但鲜花蒸馏,虽然它们与冬天相遇,  Leese,但他们的表演;他们的物质仍然很甜蜜。

VI。

然后不要让冬天的衣衫褴褛的手,  在你的夏天,你将被提炼出来:  做一些小瓶甜;珍惜你的某个地方  随着美女的宝藏,它会被自杀。  这种使用不是禁止的高利贷,  那些支付意愿贷款的人感到高兴;  那是你自己养育另一个人的,  或者十倍快乐,不过十分之一;  你的十次自我比你快乐,  如果十次中的十次重新配置你:  那么如果你应该离开,死亡会怎样呢?  让你留在后代?  不要任性,因为你太公平了  成为死亡的征服者,使蠕虫成为你的继承人。

VII。

罗!在东方时,优雅的光芒  抬起他的燃烧头,每个人都在眼睛下面  向他新出现的景象致敬,  服务于他神圣的威严;  爬上陡峭的天堂山,  在他的中年,像一个强壮的青年,  凡人看起来仍然崇拜他的美貌,  参加他的金色朝圣:  但是当从最高的球场,疲惫的车,  就像虚弱的年龄一样,他从那天开始,  现在转变的眼睛是前者的眼睛  从他的低路,看看另一种方式:  所以,你自己在中午离开了  除非你得到一个儿子,否则不会被忽视。

2 个答案:

答案 0 :(得分:1)

问题在于您正在打印列表。您想要打印列表的元素。所以不用打印(s [2:16])你可以这样做: 我在范围内(2:17):      打印(S [1])

因为十四行诗似乎是均匀间隔的,我还建议删除ifs并制作一个返回正确范围的函数。看起来它像2 + 14 *(sonnet_num - 1)到2 + 14 *(sonnet_num - 1)+ 14.这样你可以有一个if语句检查num是否为1< = n< = 7。

答案 1 :(得分:0)

那是因为你打印的是字符串列表而不是字符串。要获取列表并将其转换为字符串,请使用join

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

会产生:

"Hi I am Bob"

由于它们包含来自阅读线的换行符,因此您希望加入空字符串''.join(sonnet_lines)

您可能希望在打印电话中拥有该功能:

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

还应该提到的是,对于构建字符串,您应该尝试join列表,而不是将它们与+连接起来。