python中的结果不一致

时间:2016-08-24 18:42:08

标签: python substring

我有两个文本文件,内容分别位于(file1.txtfile2.txt下;

MKKVEAIIRPFKLDEVKIALVNAGIVGMTVSEVRGFGRQKGQTERYRGSEYTVEFLQKLKVEIVVEDNQVDMVVDKIIAAARTGEIGDGKIFISPVEQVIRIRTGEKNTEAV

AQTVPYGIPLIKADKVQAQGYKGANVKVGIIDTGIAASHTDLKVVGGASFVSGESYNTDGNGHGTHVAGTVAALDNTTGVLGVAPNVSLYAIKVLNSSGSGTYSAIVSGIEWATQNGLDVINMSLGGPSGSTALKQAVDKAYASGIVVVAAAGNSGSSGSQNTIGYPAKYDSVIAVGAVDSNKNRASFSSVGAELEVMAPGVSVYSTYPSNTYTSLNGTSMASPHVAGAAALILSKYPTLSASQVRNRLSSTATNLGDSFYYGKGLINVEAAAQ

我需要根据我知道的这个字符串的索引来获取字符。现在,我需要在索引值之前获取20个字符,在索引值之后获取20个字符,这使得总共41个字符(包括索引的字符)。 这是我的代码

with open('file1.txt', 'r') as myfile:
    x = 50
    data=myfile.read()
    str1 = data[x:x+1+20]
    temp = data[x-20:x]
    print temp+str1

file1.txt一的输出是SEVRGFGRQKGQTERYRGSEYTVEFLQKLKVEIVVEDNQVD,这是正确的。

问题是如果我在file2.txt上运行相同的代码并将索引(x的值)更改为56,我应该得到的输出是AASHTDLKVVGGASFVSGESYNTDGNGHGTHVAGTVAALDN。相反,我得到ASHTDLKVVGGASFVSGESYNTDGNGHGTHVAGTVAALDNT 这是为什么?

3 个答案:

答案 0 :(得分:0)

span {
    margin: 0;
    margin-left: 10px;
    padding: 0;
}

.http_method .link{ background: linear-gradient(#4c99d7,#1a66a3);
    border: 1px solid #1a66a3;
    height: 25px;
    line-height: 10px;
    vertical-align: middle;
}

.http_method span{
font-size: 30px;
    margin-right: 10px;
    padding-left: 10px;
    vertical-align: middle;
    color: #686b6d;
}

会给你

<link href="//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
 

<span class='http_method'>
<a href='test' class="toggleOperation"><span class="link">method</span>
 <span class="fa fa-angle-down"></span>
 </a>

即。你的字符串中的字符36到55(包含)

字符串从字符0开始,因此数据[36]确实是你的第二个A,即字符串的第37个字符

这里没有错误,只是一个反击问题

你可能实际上想要设置x = 55(即中间字符是你的字符串的第56个,因为它的索引是55,因为在python中索引从零开始)

答案 1 :(得分:0)

with open('file1.txt', 'r') as myfile:
    x = 50
    data=myfile.read()
    print data[x-20:x+21]

从位置x-20到位置x + 21进行切片。这将为您提供41个字符。

data2,56返回: ASHTDLKVVGGASFVSGESYNTDGNGHGTHVAGTVAALDNT - 您的代码是正确的。

答案 2 :(得分:0)

好的,如果你检查,文件1(第一行)中的索引50是Y,左边的20个元素从SEV...开始,这意味着从索引30开始。这是你对file1的结果,你说的是正确的。

M   K   K   V   E   A   I   I   R   P   F   K   L   D   E   V   K   I   A   L   V   N   A   G   I   V   G   M   T   V   S   E   V   R   G   F   G   R   Q   K   G   Q   T   E   R   Y   R   G   S   E   Y   T   V   E   F   L   Q   K   L   K   V   E   I   V   V   E   D   N   Q   V   D   M   V   V   D   K   I   I   A   A   
A   Q   T   V   P   Y   G   I   P   L   I   K   A   D   K   V   Q   A   Q   G   Y   K   G   A   N   V   K   V   G   I   I   D   T   G   I   A   A   S   H   T   D   L   K   V   V   G   G   A   S   F   V   S   G   E   S   Y   N   T   D   G   N   G   H   G   T   H   V   A   G   T   V   A   A   L   D   N   T   T   G   V   
0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79

现在,对于file2(第二行),您将索引设置为56,文件2中为N,左侧的20个元素从ASH...开始,从索引36开始。这是预期的结果,我不明白为什么你说这是错的。

第三行代表索引号

另见下图: enter image description here