我有一个文本文件,我想从中提取一个基于变量site
的字符串,该变量表示某个字符的位置。我想在site
的位置前后提取20个字符。
如果site
的值大于20,那么我的代码就可以很好地工作。但是如果它在site
之前少于20个字符,它不会返回任何内容。你知道吗
例如,这里有一个字符串,其中site=5
,在本例中是K
。你知道吗
MSGRGKGGKGLGKGGAKRHRKVLRDXYZX
现在我试图在字符K
前后提取20个字符。
下面是我的代码
data=myfile.read()
str1 = data[site:site+1+20]
temp = data[site-20:site]
final_sequence = temp+str1
print final_sequence
这给了我一个输出KGGKGLGKGGAKRHRKVLRDX
。因为它在K
之前找不到20个字符,所以它没有打印K
之前的字符。你知道吗
正确的应该是MSGRGKGGKGLGKGGAKRHRKVLRDX
。你知道吗
这就引出了我的问题。如果K
值的下游少于20个字符,如何修改代码以打印K
之前的所有字符?
非常感谢。你知道吗
您必须检查文件长度的上限和下限。因为必须检查负值(对于before位置)和相同的规则(对于after位置)作为上限。你知道吗
问题是,由于
site-20
是负数,Python认为它是相对于序列末尾的索引,因此切片是空的(因为第一个索引在最后一个索引之后)。一定不要低于0。你知道吗或更短
注意,不需要使用
min(site+1+20, len(data))
作为上限,因为Python会自动将序列末尾以外的切片索引剪辑为序列长度。你知道吗第一个答案使用MAX也是正确的。 下面的示例是非pythonic方式使用条件。你知道吗
用不同的数据编写适当的unittest用例来验证您的逻辑。你知道吗
相关问题 更多 >
编程相关推荐