是)我有的
我正在解析一个 .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:
- 数字后面的部分
,
是一个部分(名字) - 从第一个数字到 an
a
或 ap
(上午或下午)的部分是另一个部分(开始时间) - 从数字之后的部分
a
或p
到下一个a
或是p
另一个部分(结束时间) - 最后,剩下的部分是另一个部分(班次的类型/位置。)
我生成的 csv 文件中的一行可能如下所示:
Barnes,Michael,8:00a,10:00a,Tech
注意事项
1) 一个人一天可以有多个班次。2)有些人在括号中有昵称,但有些人没有。3)如果 Python 有通配符,比如#
数字和*
任何东西,我可以看到我如何能够继续使用partition
并继续拆分剩余的部分,如下所示:
for line in input:
name = str(line.partition(',')[0]+','+str(line.partition(',')[2].split(#)[0]))
output.write("".join(x for x in name))
output.write("\r\n")
但是,Python 似乎没有使用这样的通配符。此外,这似乎是一个非常不雅的解决方案。