截断/修剪列表每一行的日期和时间



我有一个列表,它是一个电子邮件正文,每行末尾都有一个日期和时间戳。图章的格式是一致的,因此可以从右侧计算表达式。以下是示例数据:

Dear Volunteer2018-05-21 19:59:15
Your booking has been updated at metrowitnessing.com .2018-05-21 19:59:15
Crown Street - June 15th, 10:00am2018-05-21 19:59:15
Anthony James (m: 04xxxxxxxx)2018-05-21 19:59:15
Monica Brown (m: 04xxxxxxxx)2018-05-21 19:59:15
Bob Smith (m: 04xxxxxxxx)2018-05-21 19:59:15
Status: Confirmed2018-05-21 19:59:15

尝试了以下表达式,但没有结果,其中"body"是上面列出的示例数据。

import re
SourceList = input_data['body']
OutputList = filter(
lambda ThisWord: not re.match('^(?:(?:[0-9]{4}[:/,]){2}[0-9]{2}|am|pm)$', ThisWord),
SourceList)

对于输出列表中的此值: 打印此值

我可以使用什么表达式来删除附加到每行末尾的日期和时间戳?

使用readlines将文件加载到列表中,然后您可以迭代它截断最后 19 个字符 ([:-19](。这是硬编码和丑陋的,但它有效。

删除字符不会考虑没有日期的条目,因此强烈建议不要使用在没有正则表达式区分的情况下截断行的解决方案。您需要一个搜索日期的表达式。

试试这个表达式:

这将匹配日期的开头,并包括该行的其余部分。

d{4}-d{2}-d{2}.*

要删除数据和时间戳,请在此处使用此要求:

(d{4}-d{2}-d{2}sd{2}:d{2}:d{2})

您可以使用任何正则表达式测试器(如 https://regexr.com/(轻松测试您的示例数据。

目前还不完全清楚您的数据最初采用什么格式。

如果像这样存储

text = 'Dear Volunteer2018-05-21 19:59:15 Your booking has been updated at metrowitnessing.com .2018-05-21 19:59:15 Crown Street - June 15th, 10:00am2018-05-21 19:59:15 Anthony James (m: 04xxxxxxxx)2018-05-21 19:59:15 Monica Brown (m: 04xxxxxxxx)2018-05-21 19:59:15 Bob Smith (m: 04xxxxxxxx)2018-05-21 19:59:15 Status: Confirmed2018-05-21 19:59:15'

然后你可以做

import re
re.sub(r'(d{4}-d{2}-d{2} d{2}:d{2}:d{2})', '', text)

按行拆分:

lines = body.splitlines()

对于每行:

n = 19 #number of characters to trim
line = line[:-n]

法典:

lines = body.splitlines()
output = ""
for line in lines:
output += line[:-19] + "n"
#output now contains the trimmed body 
print(output)

最新更新