私はPythonとスクリプトを初めて使用します。
Excelでこのように見える12列と数千行のテーブルの巨大なcsvファイルがあります(5つの連続するパイプ記号は新しいセルを示しているため、この例は3行と3列で構成されています)。
G "、 '32'、 '0'、 '0.98%'、" 1E0 ||||| G "、 '32'、 '0'、 '1%'、" 1E0 ||||| A "、 '48'、 '47'、 '97 .92%'、" 7.6145E-27
G "、 '32'、 '0'、 '12%'、" 1E0 ||||| G "、 '32'、 '0'、 '3%'、 "1E0 ||||| A "、 '1'、 '47'、 '97.9%'、" 7.6145E-27
G "、 '32'、 '0'、 '0%'、" 1E0 ||||| G "、 '32'、 '32'、 '0%'、" 1E0 ||||| A "、 '1'、 '47'、 '9.92%'、" 7.6145E-27
ご覧のとおり、各セルは5つのコンマ区切り要素で構成されています。最後から2番目の要素(パーセンテージ値を持つ要素)にのみ関心があります。この値に小数が含まれる場合と含まれない場合があることに注意してください。つまり、これは、その4番目の要素を検索し、他の要素が破棄される新しいファイルに書き込むために作成したコードです。
import sys
import csv
import re
with open(sys.argv[1],"r") as f_input:
read_f_input = csv.reader(f_input, delimiter=',')
with open("f_output.csv", "wt") as f_output:
f_outputwriter=csv.writer(f_output, delimiter=',')
for row in read_f_input:
genotype = re.search(r"[\d+\.]+%", [row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11]])
result= genotype.group(0)
f_outputwriter.writerow([result])
このスクリプトは、最後から3番目の行のために機能しません:genotype = ...これを単一の列(他の11列を無視)でのみ実行するとスクリプトが機能するようになりましたが、実行したい12列すべてで同時に正規表現を操作し、結果を同じテーブル形式で書き込みます。誰かが私がこのトリッキーな変換を行う方法を知っていますか?前もって感謝します!