Python-插入变量(包含多个数字的列表)

Python-插入变量(包含多个数字的列表),python,list,loops,for-loop,insert,Python,List,Loops,For Loop,Insert,我想在另一个列表的索引处插入一段标点符号到句子中: for x in range(len(final1)): final1.insert(punc_num[x], punct[x])- WHY WONT THIS WORK? 非常感谢您的帮助:-) 全部代码: f = open("file.txt","r") sentence= f.read() print (sentence) punctuations = ("'", "!", "(", ")", "-", "[", "]"

我想在另一个列表的索引处插入一段标点符号到句子中:

for x in range(len(final1)):
    final1.insert(punc_num[x], punct[x])- WHY WONT THIS WORK?  
非常感谢您的帮助:-)

全部代码:

f = open("file.txt","r") 
sentence= f.read()
print (sentence)

punctuations = ("'", "!", "(", ")", "-", "[", "]", "{", "}", ";", ":", '"', "<", ">", ".", "/", "?", "@", "#", "$", "%", "^", "&", "*", "_", "~", ",")

punc_num=[]

for x in sentence:
    if x in punctuations:
        punc_num.append(sentence.index(x))

print(punc_num)


punct=[]

for x in sentence:
    if x in punctuations:
        punct.append(x)

print(punct)





no_punct= ""

for y in sentence:
    if y not in punctuations:
        no_punct = no_punct + y

print (no_punct)





no_punct=no_punct.split()

final= (" ".join(sorted(set(no_punct), key=no_punct.index)))
print(final)
storing=[]

for x in no_punct:

    storing.append (no_punct.index(x))

print (storing)


final1= (" ".join(sorted(set(no_punct), key=no_punct.index)))
print(final1)




for x in range(len(final1)):
    final1.insert(punc_num[x], punct[x])
f=open(“file.txt”、“r”)
句子=f.读()
打印(句子)
标点符号=(“'”、“!”、“(“,”)、“-”、“[”、“]、“{”、“}”、“;”、“:”、“、”、“/”、“?”、“@”、“#”、“$”、“%”、“^”、“&”、“*”、“"、“~”、“,”)
punc_num=[]
对于句子中的x:
如果标点符号中有x:
punc_num.append(句子索引(x))
打印(punc_num)
点=[]
对于句子中的x:
如果标点符号中有x:
点追加(x)
打印(点印)
否_punt=“”
对于句子中的y:
如果y不在标点符号中:
无点=无点+y
打印(无点)
无点=无点分割()
final=(“”.join(已排序(set(no_punct),key=no_punct.index)))
打印(最终版)
存储=[]
对于无点中的x:
storing.append(无点索引(x))
打印(存储)
final1=(“”.join(已排序(set(no_punct),key=no_punct.index)))
打印(最终1)
对于范围内的x(len(final1)):
最后1.插入(punc_num[x],punt[x])

首先,当您使用
final1.insert()
时,
final1
是一个字符串,而不是列表。您可以通过执行以下操作来更新它:

final1_list = []
for x in range(len(punc_num)):
    final1_list.insert(punc_num[x], punct[x])
final1 = "".join(final1_list)
其次,定义
punc_num
时,使用
list.index()
方法。由于
list.index()
始终返回其参数的第一次出现,因此任何给定的标点符号将始终具有相同的索引,而不管它在字符串中出现多少位置。您可以将该循环更改为:

punc_num=[]
for x in sentence:
    if x in punctuations:
        index = 0
        while index + sentence[index:].index(x) in punc_num:
            index += sentence[index:].index(x) + 1
        punc_num.append(index + sentence[index:].index(x))
您的整个程序应如下所示:

f = open("file.txt","r")
sentence = f.read()
print (sentence)

punctuations = ("'", "!", "(", ")", "-", "[", "]", "{", "}", ";", ":", '"', "<", ">", ".", "/", "?", "@", "#", "$", "%", "^", "&", "*", "_", "~", ",")

punc_num=[]

for x in sentence:
    if x in punctuations:
        index = 0
        while index + sentence[index:].index(x) in punc_num:
            index += sentence[index:].index(x) + 1
        punc_num.append(index + sentence[index:].index(x))

print(punc_num)


punct=[]

for x in sentence:
    if x in punctuations:
        punct.append(x)

print(punct)





no_punct= ""

for y in sentence:
    if y not in punctuations:
        no_punct = no_punct + y

print (no_punct)



no_punct=no_punct.split()

final= (" ".join(sorted(set(no_punct), key=no_punct.index)))
print(final)
storing=[]

for x in no_punct:

    storing.append (no_punct.index(x))

print (storing)


final1= (" ".join(sorted(set(no_punct), key=no_punct.index)))
print(final1)




final1_list = list(final1)
for x in range(len(punc_num)):
    final1_list.insert(punc_num[x], punct[x])
final1 = "".join(final1_list)
f=open(“file.txt”、“r”)
句子=f.读()
打印(句子)
标点符号=(“'”、“!”、“(“,”)、“-”、“[”、“]、“{”、“}”、“;”、“:”、“、”、“/”、“?”、“@”、“#”、“$”、“%”、“^”、“&”、“*”、“"、“~”、“,”)
punc_num=[]
对于句子中的x:
如果标点符号中有x:
索引=0
而索引+句子[index:]在punc_num中的索引(x):
索引+=句子[索引:]索引(x)+1
punc_num.append(索引+句子[索引:]索引(x))
打印(punc_num)
点=[]
对于句子中的x:
如果标点符号中有x:
点追加(x)
打印(点印)
否_punt=“”
对于句子中的y:
如果y不在标点符号中:
无点=无点+y
打印(无点)
无点=无点分割()
final=(“”.join(已排序(set(no_punct),key=no_punct.index)))
打印(最终版)
存储=[]
对于无点中的x:
storing.append(无点索引(x))
打印(存储)
final1=(“”.join(已排序(set(no_punct),key=no_punct.index)))
打印(最终1)
最终列表=列表(最终列表)
对于范围内的x(len(punc_num)):
最后一个列表。插入(punc_num[x],punt[x])
final1=”“.加入(final1_列表)

1
str
没有
insert
方法。2.如果您考虑的是
list.insert()
方法,那么它的参数应该是
index,object
,而不是
object,object
。如果我将句子拆分为一个列表,我将如何插入索引(在列表中),实际上,我的第二点是无效的;你用的是数字。要获得所需的结果,您应该在
for
循环之前放置
no\u punct\u list=list(no\u punct)
,然后在调用
insert()
时使用
no\u punct\u list
而不是
no\u punct
。在你的
for
循环之后,你可以说
no\u punct=“”。加入(no\u punct\u列表)
。如果这解决了你的问题,我会把它放在一个答案中。谢谢。这真的很有帮助。但是正确索引中的两个标点我都会在列表中列出吗?不一定。定义
punc_num
时,使用
list.index()
方法。这将始终返回第一个事件,而不一定是您想要的。我会加上相关信息的答案。非常感谢。很抱歉浪费您的时间,但我正在尝试将不带标点的句子(no_punct)和标点索引的列表(punc_num)以及标点(punct)添加回句子中。非常感谢。当我运行此程序时,它会显示:>>>=============================================================================================================>>>你好,我的名字是丹。[8,21][',','.'.]你好,我的名字是丹你好,我的名字是丹[0,1,2,3,4]你好,我的名字是丹[]代码:no_punt=no_punt.split()final=(“”.join(sorted(set(no_punt),key=no_punt.index)))打印(final)存储[]用于no_punt中的x:storage.append(no_punt.index(x))打印(storing)final1=(“”.join(sorted)(sorted)(set(no_punt)(no_punt)如果标点符号中的x,索引=0,而索引+句子[index:]中的索引(x):index+=句子[index:]索引(x)中的索引(x):index+=句子[index:]索引(x)+1个punc数量追加(索引+句子[index:]索引(x))我犯了一个错误;它应该是
len(punc_num)
,而不是
len(final1)
。我已经用完整的程序更新了我的答案。太棒了,谢谢最后一个问题,我该如何将其连接成一个字符串: