#実現したい事
sample.txtから条件に合う特定の値を出力したいです。
(結果1~10までの内容が記入されています。)
条件は
『SQL order by Elapsed time』の結果範囲で、"module:"を含む場合は、その範囲内で記載のあるsql文を一行で抽出したいと思っています。
#txtから抽出したい値
① select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_obj#, nvlp_obj#=obj#(+) order by order# (1行で)
② select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt, timestamp#, sample_
size, minimum, maximum, distcnt, lowval, hival, density, col#, spare1, spare2, a
vgcln, minimum_enc, maximum_enc from hist_head$ where obj#=:1 and intcol#=:2(1行で)
#sample.txt中身 ※#結果1~4は実際のテキストには記載はありません。
SQL order by Elapsed time #結果1 ------------------------- 100 100 100 module: select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_obj#, nvlp_obj#=obj#(+) order by order# SQL order by psychical time #結果2 ------------------------- 300 300 300 module: select p_obj#, nvlp_obj#=obj#(+) order by order# SQL order by Elapsed time #結果3 ------------------------- 200 200 200 module: select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt, timestamp#, sample_ size, minimum, maximum, distcnt, lowval, hival, density, col#, spare1, spare2, a vgcln, minimum_enc, maximum_enc from hist_head$ where obj#=:1 and intcol#=:2 SQL order by Elapsed time #結果4 ------------------------- Elapsed: 200 200 200 select ringo ringo ringo mikan mikan mikan mikan ~~結果5,6,7と続く(上記以外のパターンの情報もあり)
#試した事
色々考えて行いましたが全く上手くいきません。。
本当にお手上げ状態です。。。。
条件に当てはまる最初の1行しか抽出できません。。
ファイル内全体で条件に当てはまる物をすべて抽出したいのですが。。
(※他にもたくさん試しましたが以下のコードが一番実現したかった事に近かったです。
他に試した内容が必要な場合はコメントください。)
import re filepath = 'C:\Users\Desktop\新しいフォルダー\sample.txt' def extract_text_in_file(filepath, pattern_prev, pattern_next): extracted_text_array = [] with open(filepath, "r", encoding="utf-8") as f: is_extracting = False for line in f: line = line.rstrip() if not is_extracting: if re.match(pattern_prev, line): is_extracting = True continue if re.match(pattern_next, line): break extracted_text_array.append(line.rstrip()) return extracted_text_array pattern_prev = r'Module:' pattern_next = r'^$' extracted_text_array = extract_text_in_file(filepath, pattern_prev, pattern_next) # for extracted_text in extracted_text_array: # print(extracted_text) print(' '.join(extracted_text_array))
結果 select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_obj#, nvlp_obj#=obj#(+) order by order#
抽出方法にお詳しい方、実現する為にはどんなコードを書けば条件に一致するすべての値を取得できるでしょうか?
(※本当に初心者です。。googleでもずっと調べていますが解決方法がわかりません。
アイデアやヒントでも構いませんのでコメントいただけるとありがたいです。。)
回答2件
あなたの回答
tips
プレビュー