4

我有一个大文本文件,我想只提取某些短语/单词之后的数字。

这个巨大的文本文件中有几十行,格式如下:

汽车的最佳 CV 模型:15778 是订单:2 阈值:0,AUC 为:0.7185 基因 aau_roc:0.466281

一种解决方案是只查看“for car: X”、“is order: X”、“threshold: X”、“Y gene aau_roc: X”之后的数字!

最后,我希望每行有 15778, 2, 0, 0.7185, 0.466281。

4

3 回答 3

4
>>> if line.startswith('Best CV Model'):
...     re.findall(r'\d+\.{0,1}\d*', line)
... 
['15778', '2', '0', '0.7185', '0.466281']
于 2012-12-08T21:43:09.297 回答
2

由于您已经用regex标记了您的问题,我怀疑您已经接近解决方案。你可以编写一个正则表达式模式来匹配你行中的所有数字。就像是:

pattern = r"for car: (\d+) is order:(\d+) threshold: (\d+) with AUC of : ([0-9.]+) gene aau_roc: ([0-9.]+)"

请注意,我已将其与您的示例字符串完全匹配,包括:在几个地方的字符周围有一些奇怪的间距。仔细检查它是否确实适用于您的真实数据。

要使用它来搜索您的文本文件,我会使用re.finditer搜索整个文本并返回一个可迭代的:

import re

for model, order, threshold, auc, aau_roc in re.finditer(pattern, text):
     do_stuff()
于 2012-12-08T21:44:53.730 回答
0
re.match('(?<=for car: )/n*',the_line);

只需不断重复您需要的其他变量,并将它们存储在您想要的输出中。

于 2012-12-08T21:47:26.603 回答