[英]Cannot strip character using .strip() in python
我是生物学家,需要快速编写脚本来处理一些文件。
文件格式为fasta:
>line1
ACCGAGCTACTAGXXXXX
>line2
ACGTAX
等等。
我想删除所有X个字符并快速将以下脚本放在一起:
print """Input file must be named FILE.fasta"""
fasta_file = raw_input('Input file name:') # Input fasta file
char = raw_input('Which sequence should be stripped?:')
OutFileName = fasta_file.strip('.fasta') + '_stripped.fasta'
OutFile = open(OutFileName, 'w')
WriteOutFile = True
data = open(fasta_file, "r")
for line in data:
if line.startswith('>'):
OutPut = line
else:
OutPut = line.strip(char)
print OutPut
OutFile.write(OutPut)
print(char)
OutFile.close()
quit()
它不起作用,我不知道为什么。 有什么帮助吗?
PS抱歉的可怕的代码。
其他答案指定了更好的选择。 但在您的情况下, [Python 3.Docs]:内置类型-str。 strip ( [chars] )无效,因为文件中的每一行都以EOLN终止符结尾,因此X实际上不在字符串的末尾。
需要最少代码更改的选项是从以下位置修改第三行:
char = raw_input('Which sequence should be stripped?:')
至:
char = raw_input('Which sequence should be stripped?:') + "\n"
当心 : fasta_file.strip('.fasta')
可能不会执行您认为的操作。 在这里,建议使用:
fasta_file.replace('.fasta', '_stripped.fasta')
编辑0 :
我认为写入输出文件时需要重新添加EOLN ,因此还需要替换以下行:
OutPut = line.strip(char)
通过:
OutPut = line.strip(char) + "\n"
使用line.replace(char,'')
代替line.strip(char)
Strip函数仅从两侧移除字符https://docs.python.org/2/library/string.html#string.strip
您可以使用正则表达式执行此操作:
import re
pattern = re.compile("(\w[^X]+)") # This groups everything but X
stripped = pattern.match(line).group()
对于您的情况,您可以在代码的“其他”部分中执行类似的操作,并将“(\\ w [^ X] +)”中的“ X”替换为“ char”变量:
pattern = re.compile("(\w[^" + char + "]+)")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.