当我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 吹毛求疵的情况。基本上 \n 被扩展,并且 sed 在 s/// 命令的 lhs 中看到一个死胡同。
我相信下面的内容应该能让你开始运行。
command=(fr"sed ':a; $!N; /^>/!s/\n\([^>]\)/\1/; ta; P; D' test.fasta")
PS 不确定 python 变量“single_line”是什么,但您需要变量“command”代替它。