如何使用从文本文件读取的数据在python中创建dict列表?

2024-09-30 01:35:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用莎士比亚的十四行诗创作一个词典列表。在

我想创造这样的东西:

list[0]=='十四行诗1',我如何让'十四行诗1'成为真正的十四行诗的关键?在

http://www.shakespeares-sonnets.com/sonnet/1有关十四行诗的更多信息。在

我将十四行诗保存到一个文件中,格式如下:

十四行诗1

我们渴望从最美丽的生物身上增加, 因此美丽的玫瑰永不凋谢, 但随着时间的流逝, 他那温柔的继承人也许会记住他: 但是你,你,用你自己明亮的眼睛, 给你的光之火以自我充实的燃料, 在富足之地制造饥荒, 你自己是你的敌人,对你可爱的自己太残忍了。 你现在是世界的新装饰品 只是花哨的春天的预兆, 在你自己的蓓蕾里埋葬你的满足 温柔的小人,吝啬是最浪费的。 可怜这个世界,否则这个贪吃的人, 吃了世界应得的,由坟墓和你。在

十四行诗2

当四十个寒冬笼罩你的额头, 在你美丽的田野里挖深沟, 你年轻时那引以为傲的制服,现在凝视着, 将是一根破烂的野草,价值不高: 当被问到你的美丽在哪里, 在那里你所有的宝藏, 说,在你深陷的眼睛里, 是一种吃不饱的羞耻和吝啬的赞美。 你的美貌是多么值得称赞, 如果你能回答我这个漂亮的孩子 我要把我的数目加起来做我的老借口,' 用你的继承证明他的美丽! 当你老了,这将是新的, 当你感到冷的时候,看看你的血液是温暖的。在

等等。。。在

最初我使用split(“\n\n”),因此列表看起来像['十四行诗1','十四行诗1的内容','十四行诗2',…]

然后,我使用for循环(尝试)使list[0]==['title']:'sonnet1',['Sonnet']:'contentofsonnet1'],list[1]将是十四行诗2,依此类推。。在


Tags: 文件com信息http列表www世界list
3条回答

听起来你只想要一个普通的dict,而不是一个字典列表。在

sonnet = '''From fairest creatures we desire increase,
That thereby beauty's rose might never die,
But as the riper should by time decease,
His tender heir might bear his memory:
But thou contracted to thine own bright eyes,
Feed'st thy light's flame with self-substantial fuel,
Making a famine where abundance lies,
Thy self thy foe, to thy sweet self too cruel:
Thou that art now the world's fresh ornament,
And only herald to the gaudy spring,
Within thine own bud buriest thy content,
And, tender churl, mak'st waste in niggarding:
Pity the world, or else this glutton be,
To eat the world's due, by the grave and thee.'''

# create with dict constructor
shakespeares_sonnets = {'Sonnet 1': sonnet, 'Sonnet 2': 'etc....'}

# add new ones later
shakespeares_sonnets['Sonnet N'] = 'Yo dawg, I herd u like sonnets...'

# easy to make lists out of the dict
list_of_sonnet_titles = shakespeares_sonnets.keys()
list_of_sonnets = shakespeares_sonnets.values()

据我所知,你真的只需要一个简单的^{}

my_sonnets = {}
my_sonnets['Sonnet 1'] = 'The sonnet text'

如果你仍然确定你想要一个dicts列表(其中每个dict代表一个包含多个“属性”的十四行诗,比如title/text/author/etc),那么我强烈建议你考虑一个类。在

^{pr2}$

最后,如果你坚持用错误的数据结构来回答这个问题。。。在

my_list = [{'title':'Sonnet1', 'text':'Blah'}, {'title':'Sonnet2', 'text':'more blah', 'author':'Ms. Sally'}]
my_list[0]['author'] = 'Mr. Bob'

使用这个技巧迭代分割对的结果

zip(*[iter(sonnets.split("\n\n"))]*2)

例如

^{pr2}$

相关问题 更多 >

    热门问题