我试图建立一个类,并将每首诗作为一个对象,它具有标题(后面是“诗:”)、作者和内容的属性。 我提取了书名和作者,并列出了一份清单。 但是,我不知道如何提取内容,并放入一个列表。在
我有一个txt文件,其中包括许多诗。 诗歌样本包括:
POEM: lala AUTHOR: la
aaaaaaaaaaaaaa,
aaaaaaaaa,
akaaaaaaaa
POEM: alal AUTHOR: al
llllllllllll,
llllll.
llllllll,
lllllllllll
POEM: lal AUTHOR:as
sssssssss,
sssssss,
sssssss
我就是这么做的
^{pr2}$我想把所有的诗单独列在一个列表中,但我只能得到第一首诗。在
'POEM: lala AUTHOR: la, aaaaaaaaaaaaaa, aaaaaaaaa, akaaaaaaaa'
解释说,不使用正则表达式更容易解决问题。在
逐行解释
首先打开文件
你将得到你的诗歌列表,其中包含你在问题最后一部分中展示的预期输出
^{pr2}$我们删除第一个元素,因为它是空的,这是由于split函数
到目前为止,
poems_list
将给出另一个用户在他的问题中发布的内容。但是,如果您真的想解析数据,我想这是您使用regex的目的,那么您可以继续执行以下操作:我们检查了诗歌列表中的每首诗,分析它们所包含的数据
首先,我们用porse关键字分割它,记住你必须在分号和诗名之间留一个空格,否则它将无法工作(不修改代码)
现在我们由作者拆分它,同样适当地留下尾随空格。我们取i1第二个元素,因为第一个元素是诗名,其余的内容现在存储在列表的第二个元素中。在
同样,我们将使用列表中的第二个元素来获取文本的其余部分。我们把它分成新行,因为这首诗是在陈述作者之后,在换行之后开始的
我们保存我们获得的值
现在轮到你按你的意愿处理数据了。我建议你把它储存在字典里。在
完整代码
所有无说明的代码(用于复制粘贴):
进一步思考
我不建议你把你的数据像那样存储在那个文件里。这是非常低效的,微小的修改会在代码的功能上造成很大的问题,这就需要进行很大的修改。建议使用数据库、pandas、csv格式甚至pickle来存储字典,或者至少格式化得更好一些。在
代码
See regex in use here
注意:上面的regex只是捕捉空白并断言位置匹配(使用正的lookahead)。有关详细信息,请参阅说明。在
用法
See code in use here
基本知识
^{pr2}$在实践中(使用示例字符串)
结果
解释
\s*
匹配任意数量的空白字符(?=POEM:)
积极的前瞻确保后面的内容与{相关问题 更多 >
编程相关推荐