4

大きなテキスト ファイルがあり、特定の語句/単語の後にある数字のみを抽出したいと考えています。

この巨大なテキスト ファイルには、次の形式の行が数十行あります。

車の最適な CV モデル: 15778 は order:2 しきい値: 0 AUC : 0.7185 遺伝子 aau_roc: 0.466281

解決策の 1 つは、「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を検索するには、テキスト全体を検索して iterable を返します。

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 に答える