我有一个大文本文件,我想只提取某些短语/单词之后的数字。
这个巨大的文本文件中有几十行,格式如下:
汽车的最佳 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。
>>> if line.startswith('Best CV Model'):
... re.findall(r'\d+\.{0,1}\d*', line)
...
['15778', '2', '0', '0.7185', '0.466281']
由于您已经用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()
re.match('(?<=for car: )/n*',the_line);
只需不断重复您需要的其他变量,并将它们存储在您想要的输出中。