我正在尝试匹配日记条目日期的正则表达式,如果匹配成功,将日期作为键,随后的条目作为值。
首先,我打算将其拆分成一个数组,并将每个奇数索引作为键,每个偶数索引作为值。
来源:https://archive.org/stream/AnneFrankTheDiaryOfAYoungGirl_201606/Anne-Frank-The-Diary-Of-A-Young-Girl_djvu.txt
然而,这只是在正则表达式之前和之后进行分割。因此,分割不是正确的方法... 因为它也会在列表中给出某些原因上的日期和月份。
什么是最简单的方法来分割这些如下的日记条目?
首先,我打算将其拆分成一个数组,并将每个奇数索引作为键,每个偶数索引作为值。
来源:https://archive.org/stream/AnneFrankTheDiaryOfAYoungGirl_201606/Anne-Frank-The-Diary-Of-A-Young-Girl_djvu.txt
file = open(r"C:\Users\mmcgown\Desktop\School\MSDS452\FinalProject\TheDiaryOfAYoungGirl.txt","r")
s = file.read()
import re
r = '(SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY), (JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER) \d{1,2}, 19\d{2}\s*\n'
l = re.split(r,s)
l
然而,这只是在正则表达式之前和之后进行分割。因此,分割不是正确的方法... 因为它也会在列表中给出某些原因上的日期和月份。
'',
'SUNDAY',
'JUNE',
'I\'ll begin from the ...
什么是最简单的方法来分割这些如下的日记条目?
{ 'SUNDAY, JUNE 14, 1942' : 'I'll begin from the ...' },
{ 'MONDAY, JUNE 15, 1942' : 'I had my birthday ...'},
etc.
顺便提一下,我也尝试了逐行处理文件的方法,但越来越难看,所以我想寻求正确解决方案的建议(下面的代码我没写完)。
file = open(r"C:\Users\mmcgown\Desktop\School\MSDS452\FinalProject\TheDiaryOfAYoungGirl.txt","r")
dia = {}
for line in file:
i = 0
if re.match(r,line) and i == 0:
dia = {line.rstrip() : ''}
elif not re.match(r,line):
line = last_line + line
elif re.match(r,line) and (i != 0):
dia.update({line: last_line})
i = i + 1
last_line = line