繁体   English   中英

无法在python中使用.strip()剥离字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM