我有一个字符串列表,每个字符串都是以几乎完全相同的方式格式化的电子邮件。每封电子邮件中都有很多信息,但最重要的信息是设施名称和事件日期。
我希望能够获取该电子邮件列表,并创建一个新列表,其中根据“location_substring”将电子邮件分组在一起,然后再次针对“incident_date_substring”进行排序,以便来自一个位置的所有电子邮件都将按时间顺序在列表中组合在一起。
设施子字符串通常可以在每封电子邮件的主题行中找到。事件日期可以在电子邮件中以“事件日期:”开头的一行中找到。
关于我将如何做这件事的任何想法?
我有一个字符串列表,如下所示:
sixbit = ['000011', '000001', '010100', '100001']
Run Code Online (Sandbox Code Playgroud)
我想迭代这个列表并生成一个如下所示的新列表:
eightbit = ['00001100', '00010101', '00100001']
Run Code Online (Sandbox Code Playgroud)
出于说明的目的,len(sixbit)等于4,因为它很好地转换为8位.理想情况下,六位可以是任意长度 - 如果八位"切断"任何剩余的1或0,那就没问题.
这是我尝试过的一些代码......遗憾的是,它已经过了,但也许你可以看到我正在尝试做的事情.这个想法是1)将所有数字放入一个大字符串2)循环每个数字并保持计数,在迭代时将数字收集到持有者3)当count = 8附加到列表4)继续迭代
def compress_six_bit(ary):
final_list = []
holder = ''
temp_string = ''
encode_counter = 0
for i in ary:
holder = holder + i
while encode_counter < 8:
encode_counter = encode_counter + 1
temp_string = temp_string + i
final_list.append(temp_string)
encode_counter = 0
temp_string = ''
return final_list
Run Code Online (Sandbox Code Playgroud) 这是我的问题的简化版本,但这里是它的要点:我有一个脚本,通过使用Regex查找特定模式来对电子邮件进行排序.我排序的其中一项是收到电子邮件的日期.我使用datetime模块格式化日期字符串,如下所示:
s1 = datetime.strptime(regex_obtained_str, '%B %d, %Y, %I:%M:%S %p').strftime('%m/%d/%Y %I:%M:%S %p')
Run Code Online (Sandbox Code Playgroud)
现在,假设我已经解析了4封电子邮件,这些是来自Regex函数的结果:
s1 = 'March 15, 2013 8:58:34 PM'
s2 = 'March 15, 2013 11:10:10 AM'
s3 = 'March 15, 2013 11:16:06 AM'
s4 = 'April 15, 2013 12:02:04 PM'
Run Code Online (Sandbox Code Playgroud)
在strftime格式化之后变成了这个:
s1 = '03/15/2013 08:58:34 PM'
s2 = '03/15/2013 11:10:10 AM'
s3 = '03/15/2013 11:16:06 AM'
s4 = '04/15/2013 12:02:04 PM'
Run Code Online (Sandbox Code Playgroud)
如果我以随机顺序将这些全部放在列表中并执行sort()函数,如下所示:
L = [s2, s1, s3, s4]
L.sort()
Run Code Online (Sandbox Code Playgroud)
输出是:
['03/15/2013 08:58:34 PM', '03/15/2013 11:10:10 AM', '03/15/2013 11:16:06 AM', '04/15/2013 …Run Code Online (Sandbox Code Playgroud)