【发布时间】:2018-08-06 09:05:03
【问题描述】:
我正在解析日志文件中的信息和布局数据。假设我有一些看起来像这样的行:
图书:190 已借阅:ABCD-1234-E5F6,状态:LATE 返回:02.20.2018
我正在尝试删除特定于该行的信息,例如数字、序列号、日期等。但是,说“状态:迟到”应该保留。我想要这样的输出:
图书签出者,状态:延迟归还
(这个例子是编造的,结合实际的数据和任务有点意思。)
目前我有:re.sub(':\s.*?(?=[^A-Z\d\-.])','', str) 删除“:”后面不是大写字母、数字和“。”的所有字符或“-”(它停在其他任何地方,如空格、a-z 等)。但是,我的输出将保留最后一位并删除状态。
图书签出者,状态:返回:10.20.2018
- 如何指定删除“:”后面的所有大写字母,但单词“LATE”除外
- 缺少什么也会删除行尾的数字?
【问题讨论】:
-
:\s*(?!LATE)[\w-.]+(?=[\s,]|$)或:\s*(?!LATE)\S+?(?=[\s,]|$)怎么样? -
你说这个例子是虚构的——你能澄清一下它实际上代表了你实际使用的数据吗?另外 - 你最终想要的输出是什么?
-
第二个来自 ctwheels 的作品!谢谢。
-
@JonClements - 我正在为审计日志做 QA,并确保某些事件确实被记录下来。我正在尝试删除特定于特定测试用例的数字和数据(产品序列号、IP 地址等),这样我就只剩下一般事件来区分预期的输出了。
-
啊,好吧...只是想知道解析该行是否有意义,然后删除识别信息...或者,如果您知道您要查找的内容-那么只需专门查找即可。 ..
标签: python regex parsing python-3.5