Python 在insert()内调用变量

Python 在insert()内调用变量,python,python-2.7,Python,Python 2.7,我在python 2.7.7中尝试使用两个文本文件,其结构如以下示例所示: sequence_file.txt: MKRPGGAGGGGGSPSLVTMANSSDDGYGGVGMEAEGDVEEEMMACGGGGE positions.txt 10 7 4 我要做的是在positions.txt中指示的每个位置的序列中插入一个#符号: MKR#PGG#AGGG#GGSPSLVTMANSSDDGYGGVGMEAEGDVEEEMMACGGGGE 目前,我的代码如下: # Open sequen

我在python 2.7.7中尝试使用两个文本文件,其结构如以下示例所示:

sequence_file.txt:

MKRPGGAGGGGGSPSLVTMANSSDDGYGGVGMEAEGDVEEEMMACGGGGE
positions.txt

10
7
4
我要做的是在positions.txt中指示的每个位置的序列中插入一个#符号:

MKR#PGG#AGGG#GGSPSLVTMANSSDDGYGGVGMEAEGDVEEEMMACGGGGE
目前,我的代码如下:

# Open sequence file, remove newlines:
with open ("sequence_file.txt", "r") as seqfile:
    seqstring=seqfile.read().replace('\n', '').replace('\r', '')

# Turn sequence into list
seqlist = list(sequence)

# Open positions.txt, and use each line as a parameter for the insert() function.
with open("positions.txt") as positions:
    for line in positions:
        insertpoint = line.rstrip('\n')
        seqlist.insert(insertpoint, '#')

seqlist = list(sequence)
这段代码的最后一块就是它倒下的地方。我试图让它读取第一行,修剪换行符(\n),然后在insert()命令中将该行用作变量(insertpoint)。然而,每当我尝试这一点时,它都会告诉我:

回溯(最近一次呼叫最后一次):
文件“”,第4行,在
seqlist.insert(插入点“#”)
TypeError:需要一个整数
如果我测试它并尝试“print insertpoint”,它会正确地生成数字,因此我对错误的解释是,当我使用insert()命令时,它将“insertpoint”读取为文本,而不是刚刚设置的变量

有人能告诉我这有什么问题吗

返回一个字符串,但
insert()
需要一个整数

解决方案:将该字符串转换为整数:

insertpoint = int(line.rstrip('\n'))
注意:当您打印
插入点时
会显示,但不带
,但它是一个字符串。您可以通过打印其类型来检查:

print(type(insertpoint)) # <type 'str'>
打印(键入(插入点))#
返回一个字符串,但
insert()
需要一个整数

解决方案:将该字符串转换为整数:

insertpoint = int(line.rstrip('\n'))
注意:当您打印
插入点时
会显示,但不带
,但它是一个字符串。您可以通过打印其类型来检查:

print(type(insertpoint)) # <type 'str'>
打印(键入(插入点))#

您可能需要在insertpoint周围放置int():

seqlist.insert(int(insertpoint), '#')

您可能需要在insertpoint周围放置int():

seqlist.insert(int(insertpoint), '#')

.insert()
需要知道在列表中插入的位置。您没有告诉它在哪里-您传递的是随机字符串,而不是整数:
在给定位置插入项。第一个参数是要插入的元素的索引,因此a.insert(0,x)在列表的前面插入,而a.insert(len(a),x)相当于a.append(x)。
Ah!谢谢这就解决了问题,谢谢。
.insert()
需要知道在列表中插入的位置。您没有告诉它在哪里-您传递的是随机字符串,而不是整数:
在给定位置插入项。第一个参数是要插入的元素的索引,因此a.insert(0,x)在列表的前面插入,而a.insert(len(a),x)相当于a.append(x)。
Ah!谢谢这就解决了,谢谢,谢谢!将其转换为整数确实解决了问题。谢谢!将其转换为整数确实解决了问题。