我正在分析一个.txt文件,该文件包含了某一天谁工作的日程安排信息。.txt文件如下所示:
START PAGE 0
XYZ Schedule for: Saturday, March 30, 2013
Barnes, Michael8:00a10:00aTech
Collins, Jessica8:00a4:00pSupervisor
Hamilton, Patricia8:00a10:00aTech
Smith, Jan8:00a10:00aTech
Park, Kimberly8:00a10:00aTech
Edwards, Terrell10:00a12:00pTech
Green, Harrold12:00p2:00pTech
Tait, Jessica12:00p2:00pTech
Tait, Jessica2:00p4:00pTech
Hernandez, William (Monte)4:00p6:30pSupervisor
Tait, Chioma4:00p6:00pTech
Hernandez, William (Monte)6:30p7:00pSupervisor
Hernandez, William (Monte)7:00p9:00pSupervisor
Tailor, Thomas (Jason)9:00p12:00aSupervisor
Jones, Deslynne10:00p12:00aTech
3/28/2013 2:21:17 PM
END PAGE 0
所以前两行和最后两行并不相关,但中间的每一行都是一个人的日程安排。在
我想解析出每一行的片段,这样我就可以把它写到一个.csv文件中。我可以使用line.partition(',')[0]
来获得姓氏(每行的第一个部分),但是在那之后我就不知所措了。我需要将以下内容传达给Python:
,
后面的部分是一个部分(第一个
名称)a
或p
的部分
(对于am或pm)是另一个部分(开始时间)a
或{a
或{我得到的csv文件中的一行可能如下所示:
Barnes,Michael,8:00a,10:00a,Tech
1)一个人一天可以有多个班次。
2) 有些人在括号里有一个昵称,但有些人没有。
3) 如果Python对一个数字有#
和*
之类的通配符,那么我可以看到如何继续使用partition
并继续拆分剩余的部分,如下所示:
然而,Python似乎没有使用这样的通配符。而且,这似乎是一个非常不雅观的解决方案。在
假设您知道如何删除前两行和最后两行,剩下的行在一个名为
s
的字符串中,下面是我将如何做您想要的:这将适用于任意数量的轮班。在
输出:
^{pr2}$这足以让你开始:
印刷品
^{pr2}$阅读
re
模块的文档以了解正则表达式。您可以将名称解析为一个单独的步骤,或者扩展正则表达式以更具体。我建议使用csv
模块写入csv文件。在如果你卡住了,用代码贴出具体的问题。在
相关问题 更多 >
编程相关推荐