私が持っているもの
特定の日に誰がいつ働くかのスケジュール情報を含む .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
したがって、最初の 2 行と最後の 2 行は関係ありませんが、途中の 1 行おきに 1 人のスケジュールが表示されます。
私が欲しいもの
.csv ファイルに書き込めるように、各行の断片を解析したいと考えています。line.partition(',')[0]
姓(各行の最初の部分)を取得するために使用できますが、その後は途方に暮れています。以下を Python に伝える必要があります。
- 数字の のあとが
,
部(名)です - 最初の番号から an
a
または ap
(午前または午後) までの部分は、別のセクション (開始時間) です。 - その直後
a
またはp
次の番号からの部分a
またはp
別のセクション(終了時間) - 最後に、残りのセクションは別のセクション (シフトの種類/位置) です。
結果の csv ファイルの行は次のようになります。
Barnes,Michael,8:00a,10:00a,Tech
注意事項
1) 1 人が 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 はそのようなワイルドカードを使用していないようです。また、これは非常に洗練されていないソリューションのようです。