从文本文件复制行 - 删除格式 - Python
Copying lines from text file- remove formatting- Python
我正在尝试从文件中读取文本,然后根据用户的输入打印出相应的莎士比亚十四行诗。 [如果用户输入 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()'
(即我的 returns 看起来像这样:)
'''['From fairest creatures we desire increase,\n', "这样美丽的玫瑰可能永远不会凋谢,\n", ' 但随着时间的推移,成熟的玫瑰会凋谢,\n', ' 他温柔的继承人可能会记住他:\n', '但你被你自己明亮的眼睛所束缚,\n', "用 self-substantial 燃料喂养你的光的火焰,\n", '在富足的地方制造饥荒,\n', ' 你的自己是你的敌人,对你甜蜜的自己太残忍了:\n', "你现在是世界上新鲜的装饰品,\n", ' 并且只是华丽的先驱 spring,\n', ' Within你自己的花蕾埋葬了你的满足,\n', " 温柔的乡巴佬,吝啬是浪费:\n", '可怜这个世界,否则这个贪吃的人就是,\n', " 吃世界的债,在坟墓和你旁边。\n"]'''
(而不是像这样:)
'''我们希望增加最美丽的生物,
美丽的玫瑰因此永不凋谢,
但随着时间的推移,成熟的人会消亡,
他温柔的继承人可能会记住他:
但你却凝视着你自己明亮的眼睛,
用 self-substantial 燃料喂养你的光之火焰,
在丰富的地方制造饥荒,
你自己你的敌人,对你可爱的自己太残忍了:
你现在是世界上新鲜的装饰品,
也只是花哨的先驱 spring,
在你自己的花蕾中埋下你的满足,
而且,温柔的混蛋,吝啬是最浪费的:
可怜这个世界,否则这个贪吃的人,
吃世界应得的,由坟墓和你。'''
对于篇幅,我深表歉意,但这是原始文本文件:
我.
我们希望从最美丽的生物中增加,
美丽的玫瑰因此永不凋谢,
但随着时间的推移,成熟的人会消亡,
他温柔的继承人可能会记住他:
但你却凝视着你自己明亮的眼睛,
用 self-substantial 燃料喂养你的光之火焰,
在丰富的地方制造饥荒,
你自己你的敌人,对你可爱的自己太残忍了:
你现在是世界上新鲜的装饰品,
也只是花哨的先驱 spring,
在你自己的花蕾中埋下你的满足,
而且,温柔的混蛋,吝啬是最浪费的:
可怜这个世界,否则这个贪吃的人,
吃世界应得的,由坟墓和你。
二.
当四十个冬天围攻你的额头时,
在你美丽的领域挖深沟,
你青春骄傲的制服现在如此凝视,
将是一棵摇摇欲坠的杂草,价值微乎其微:
然后被问到,你所有的美丽在哪里,
你所有的财富都在那里;
说,在你自己深陷的眼睛里,
是all-eating的耻辱,节俭的赞美。
你的美丽更值得赞美,
如果你能回答'我的这个child
将总结我的计数,并为我的老借口辩护,'
通过继承你来证明他的美丽!
当你年老时,这将是新的,
当你感到寒冷时,看看你的血液是温暖的。
三.
看着你的镜子,说出你看到的那张脸
现在是时候换一张脸了;
如果你现在不更新,谁的新修复,
你欺骗了世界,除非祝福某些母亲。
因为她没有耳朵的子宫在哪里如此美丽
蔑视你的耕作?
或者他如此喜欢谁将成为坟墓
他的self-love,要阻止后人?
你是你母亲的镜子,她在你里面
唤回她盛年的可爱四月;
所以你到 windows 的年龄都会看到,
尽管有皱纹,但这是你的黄金时光。
但如果你还活着,就不会被记住,
一个人死去,你的形象也跟着死去。
四.
不节俭的可爱,你为什么要花钱
在你自己身上你的美丽的遗产?
大自然的馈赠什么都不给,却借出,
坦率地说,她借给那些人是免费的:
那么,美丽的小气鬼,你为什么虐待
给你的慷慨大方?
无利可图的高利贷者,你为什么要使用
这么大一笔钱,还活不下去?
因为独自与你自己来往,
你欺骗了你自己,你可爱的自己:
那么当大自然呼唤你离开时,
你能留下什么可接受的审计?
你未使用的美丽必须与你同葬,
哪个,使用过,遗嘱执行人是。
V.
那些用温柔的工作完成的时间
每只眼睛都驻留的可爱凝视,
会玩霸道总裁一样
以及公平的不公平 excel;
对于 never-resting 时间导致夏季
到可怕的冬天,在那里使他感到困惑;
汁液被霜冻住,茂盛的叶子完全消失了,
处处美丽o'er-snowed和裸露:
那时夏天的蒸馏酒还没有剩下,
一个囚禁在玻璃墙上的液体囚犯,
失去了美与美的效果,
也不是,也不记得它是什么:
但是经过蒸馏的花朵,尽管它们与冬天相遇,
Leese不过是他们的表演;他们的物质仍然我很甜蜜。
六.
那么就不要让冬天破烂的手玷污,
在你的夏天,在你被蒸馏之前:
做一些甜的小瓶;珍惜你的地方
趁着美人的宝藏self-killed。
那使用不是禁止高利贷,
这使愿意偿还贷款的人感到高兴;
那是为了你自己繁殖另一个你,
或者十倍快乐,十比一;
你自己比你现在快乐十倍,
如果你十次中的十次重塑了你:
如果你离开,死亡又能做什么,
让你活在后世?
不要self-willed,因为你太美了
成为死亡的征服者,让蠕虫成为你的继承人。
七.
瞧!在东方,当仁慈的光
抬起他燃烧的头,每个人都在眼睛下面
向他的 new-appearing 视线致敬,
侍奉神圣的威严;
并攀登了 steep-up 天山,
犹如中年壮汉,
然而,凡人的外表仍然崇拜他的美丽,
参加他的黄金朝圣之旅:
但是当从最高点开始,带着疲惫的汽车,
就像虚弱的年龄,他从白天开始疲惫不堪,
眼睛,以前是顺从的,现在皈依了
从他的低道,从另一个角度看:
所以你,你自己在中午外出
除非你得到一个儿子,否则最无人问津。
那是因为您打印的是字符串列表而不是字符串。要获取列表并将其转换为字符串,请使用 join
' '.join(["Hi","I","am","Bob")
会产生:
"Hi I am Bob"
因为它们包含来自 readlines 的换行符,所以您需要加入一个空字符串 ''.join(sonnet_lines)
。
您可能希望在打印调用中包含它:
if x==1:
print(''.join(s[2:16]))
还应该提到的是,对于构建字符串,您应该尝试 join
列表而不是将它们与 +
连接起来。
问题在于您正在打印列表。您想要打印列表的元素。所以代替 print(s[2:16]) 你可以这样做:
对于我在范围内(2:17):
打印(s[i])
因为十四行诗似乎间隔均匀,我还建议删除 ifs 并制作一个 returns 正确范围的函数。看起来像是 2 + 14 * (sonnet_num - 1) 到 2 + 14 * (sonnet_num - 1) + 14。这样你就可以有一个 if 语句来检查 num 是否为 1< =n<=7.
我正在尝试从文件中读取文本,然后根据用户的输入打印出相应的莎士比亚十四行诗。 [如果用户输入 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()'
(即我的 returns 看起来像这样:)
'''['From fairest creatures we desire increase,\n', "这样美丽的玫瑰可能永远不会凋谢,\n", ' 但随着时间的推移,成熟的玫瑰会凋谢,\n', ' 他温柔的继承人可能会记住他:\n', '但你被你自己明亮的眼睛所束缚,\n', "用 self-substantial 燃料喂养你的光的火焰,\n", '在富足的地方制造饥荒,\n', ' 你的自己是你的敌人,对你甜蜜的自己太残忍了:\n', "你现在是世界上新鲜的装饰品,\n", ' 并且只是华丽的先驱 spring,\n', ' Within你自己的花蕾埋葬了你的满足,\n', " 温柔的乡巴佬,吝啬是浪费:\n", '可怜这个世界,否则这个贪吃的人就是,\n', " 吃世界的债,在坟墓和你旁边。\n"]'''
(而不是像这样:)
'''我们希望增加最美丽的生物, 美丽的玫瑰因此永不凋谢, 但随着时间的推移,成熟的人会消亡, 他温柔的继承人可能会记住他: 但你却凝视着你自己明亮的眼睛, 用 self-substantial 燃料喂养你的光之火焰, 在丰富的地方制造饥荒, 你自己你的敌人,对你可爱的自己太残忍了: 你现在是世界上新鲜的装饰品, 也只是花哨的先驱 spring, 在你自己的花蕾中埋下你的满足, 而且,温柔的混蛋,吝啬是最浪费的: 可怜这个世界,否则这个贪吃的人, 吃世界应得的,由坟墓和你。'''
对于篇幅,我深表歉意,但这是原始文本文件:
我.
我们希望从最美丽的生物中增加, 美丽的玫瑰因此永不凋谢, 但随着时间的推移,成熟的人会消亡, 他温柔的继承人可能会记住他: 但你却凝视着你自己明亮的眼睛, 用 self-substantial 燃料喂养你的光之火焰, 在丰富的地方制造饥荒, 你自己你的敌人,对你可爱的自己太残忍了: 你现在是世界上新鲜的装饰品, 也只是花哨的先驱 spring, 在你自己的花蕾中埋下你的满足, 而且,温柔的混蛋,吝啬是最浪费的: 可怜这个世界,否则这个贪吃的人, 吃世界应得的,由坟墓和你。
二.
当四十个冬天围攻你的额头时, 在你美丽的领域挖深沟, 你青春骄傲的制服现在如此凝视, 将是一棵摇摇欲坠的杂草,价值微乎其微: 然后被问到,你所有的美丽在哪里, 你所有的财富都在那里; 说,在你自己深陷的眼睛里, 是all-eating的耻辱,节俭的赞美。 你的美丽更值得赞美, 如果你能回答'我的这个child 将总结我的计数,并为我的老借口辩护,' 通过继承你来证明他的美丽! 当你年老时,这将是新的, 当你感到寒冷时,看看你的血液是温暖的。
三.
看着你的镜子,说出你看到的那张脸 现在是时候换一张脸了; 如果你现在不更新,谁的新修复, 你欺骗了世界,除非祝福某些母亲。 因为她没有耳朵的子宫在哪里如此美丽 蔑视你的耕作? 或者他如此喜欢谁将成为坟墓 他的self-love,要阻止后人? 你是你母亲的镜子,她在你里面 唤回她盛年的可爱四月; 所以你到 windows 的年龄都会看到, 尽管有皱纹,但这是你的黄金时光。 但如果你还活着,就不会被记住, 一个人死去,你的形象也跟着死去。
四.
不节俭的可爱,你为什么要花钱 在你自己身上你的美丽的遗产? 大自然的馈赠什么都不给,却借出, 坦率地说,她借给那些人是免费的: 那么,美丽的小气鬼,你为什么虐待 给你的慷慨大方? 无利可图的高利贷者,你为什么要使用 这么大一笔钱,还活不下去? 因为独自与你自己来往, 你欺骗了你自己,你可爱的自己: 那么当大自然呼唤你离开时, 你能留下什么可接受的审计? 你未使用的美丽必须与你同葬, 哪个,使用过,遗嘱执行人是。
V.
那些用温柔的工作完成的时间 每只眼睛都驻留的可爱凝视, 会玩霸道总裁一样 以及公平的不公平 excel; 对于 never-resting 时间导致夏季 到可怕的冬天,在那里使他感到困惑; 汁液被霜冻住,茂盛的叶子完全消失了, 处处美丽o'er-snowed和裸露: 那时夏天的蒸馏酒还没有剩下, 一个囚禁在玻璃墙上的液体囚犯, 失去了美与美的效果, 也不是,也不记得它是什么: 但是经过蒸馏的花朵,尽管它们与冬天相遇, Leese不过是他们的表演;他们的物质仍然我很甜蜜。
六.
那么就不要让冬天破烂的手玷污, 在你的夏天,在你被蒸馏之前: 做一些甜的小瓶;珍惜你的地方 趁着美人的宝藏self-killed。 那使用不是禁止高利贷, 这使愿意偿还贷款的人感到高兴; 那是为了你自己繁殖另一个你, 或者十倍快乐,十比一; 你自己比你现在快乐十倍, 如果你十次中的十次重塑了你: 如果你离开,死亡又能做什么, 让你活在后世? 不要self-willed,因为你太美了 成为死亡的征服者,让蠕虫成为你的继承人。
七.
瞧!在东方,当仁慈的光 抬起他燃烧的头,每个人都在眼睛下面 向他的 new-appearing 视线致敬, 侍奉神圣的威严; 并攀登了 steep-up 天山, 犹如中年壮汉, 然而,凡人的外表仍然崇拜他的美丽, 参加他的黄金朝圣之旅: 但是当从最高点开始,带着疲惫的汽车, 就像虚弱的年龄,他从白天开始疲惫不堪, 眼睛,以前是顺从的,现在皈依了 从他的低道,从另一个角度看: 所以你,你自己在中午外出 除非你得到一个儿子,否则最无人问津。
那是因为您打印的是字符串列表而不是字符串。要获取列表并将其转换为字符串,请使用 join
' '.join(["Hi","I","am","Bob")
会产生:
"Hi I am Bob"
因为它们包含来自 readlines 的换行符,所以您需要加入一个空字符串 ''.join(sonnet_lines)
。
您可能希望在打印调用中包含它:
if x==1:
print(''.join(s[2:16]))
还应该提到的是,对于构建字符串,您应该尝试 join
列表而不是将它们与 +
连接起来。
问题在于您正在打印列表。您想要打印列表的元素。所以代替 print(s[2:16]) 你可以这样做: 对于我在范围内(2:17): 打印(s[i])
因为十四行诗似乎间隔均匀,我还建议删除 ifs 并制作一个 returns 正确范围的函数。看起来像是 2 + 14 * (sonnet_num - 1) 到 2 + 14 * (sonnet_num - 1) + 14。这样你就可以有一个 if 语句来检查 num 是否为 1< =n<=7.