端末でコマンドを実行するとsed
正常に動作しますが、Pythonで使用するとエラーが発生します。
sed
注文する:
sed ':a; $!N; /^>/!s/\n\([^>]\)/\1/; ta; P; D' test.fasta
SJL19094
MQVHPTLVLNPKLTIFLSFDGALGGLYDFITPNASALWAPPLGSNRVMYLRSDLRYGDDDPLSWPQSYVPQYCHFPIIRSVLLNPSDSHPDARYTGFRAKLTSTKLILPANAGVQDSYSIISFAWFQKRVDKTVEHGKGTTFFEGAEDLKHSYTVLLHDLLERLQHLPMS
SJL19095
MGIQAHLGHPQATGEPSGEVWGP
SJL19096
MLPKEIDEFKNEIDSRGGYMYTLATSINDFTENTHETVCQFLKAAPLIPDLEYKFDPNKREDYPEKQWTSSGLVQDERLSHVRTWLRNVRYHPEGLNNKQYLTFKQYCRNFFLDKEG
SJL19097
MGNGIATSYFQELEMEAKLARRHYDKRERGMMMKAVQLGIPKSYSKFIAMMGFNMPHTYQEWKARVTATYEERQKKWVFDQTTSTPYDSCPLNKGHSNTALATKQMARPPMTAIYKTSNSVS
しかし、Pythonで同じコードを使用すると、次の警告が表示されます。
Pythonコマンド
import subprocess
command=(f"sed ':a; $!N; /^>/!s/\n\([^>]\)/\1/; ta; P; D' test.fasta")
subprocess.call(single_line,shell=True)
sed: -e expression #1, char 16: unterminated `s' command
同じ内容の説明をいただきありがとうございます。よろしくお願いします!
答え1
元の文字列も含めるようにf文字列を変更して、エスケープシーケンスが文字通り使用さ\n
れ、拡張されないようにsed nitpickが発生する場所です。デフォルトでは \n は拡張され、sed は s/// コマンドの lhs で行き止まりの路地を表示します。
私は次にあなたを始めて実行させなければならないと思います。
command=(fr"sed ':a; $!N; /^>/!s/\n\([^>]\)/\1/; ta; P; D' test.fasta")
PS:Python変数「single_line」が何であるかはわかりませんが、代わりに「command」変数が必要です。