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

2024-09-30 05:21:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个生物学家,需要做一个快速的脚本来处理一些文件。在

文件格式为fasta:

>line1
ACCGAGCTACTAGXXXXX
>line2
ACGTAX

等等。在

我想删除所有的X字符,然后快速将此脚本放在一起:

^{pr2}$

它不起作用,我不知道为什么。有什么帮助吗?在

抱歉,代码太糟糕了。在


Tags: 文件代码脚本字符fasta生物学家line1pr2
3条回答

可以使用regex执行此操作:

import re
pattern = re.compile("(\w[^X]+)")  # This groups everything but X
stripped = pattern.match(line).group()

对于您的情况,您可以在代码的“else”部分执行类似的操作,并将“(\w[^X]+)”中的“X”替换为“char”变量:

^{pr2}$

使用line.replace(char,'')代替line.strip(char) Strip函数只从https://docs.python.org/2/library/string.html#string.strip侧面删除字符

其他答案指明了更好的选择。但在您的例子中,[Python 3.Docs]: Built-in Types - str.strip([chars])不起作用,因为文件中的每一行都以EOLN结束符结束,所以X实际上并不在字符串的末尾。在

需要最少更改代码的选项是从以下位置修改3rd行:

char = raw_input('Which sequence should be stripped?:')

收件人:

^{pr2}$

当心:行fasta_file.strip('.fasta')可能没有您认为的那样。在这里,建议使用:

fasta_file.replace('.fasta', '_stripped.fasta')

编辑0:

我认为在写入输出文件时,您需要将EOLN添加回,因此您还需要替换以下行:

OutPut = line.strip(char)

签署人:

OutPut = line.strip(char) + "\n"

相关问题 更多 >

    热门问题