|
5鱼币
各位晚上好,代码运行后说是46行: IndexError: list index out of range 求修改代码,谢谢。
我的代码:
dicFile = open('9999.txt', 'r') # 打开数据
print('开始装载数据...')
txtDict = {} # 建立字典
while True:
line = dicFile.readline()
if line == '':
break
index = line.find(':') # 以tab键为分割
key = line[:index]
value = line[index:]
txtDict[key] = value # 加入字典
dicFile.close()
##查找字典
srcFile = open('1000万分解01.txt', 'r',encoding='UTF-8') # 要匹配的key
destFile = open('1000万分解01标注文件.txt', 'w',encoding='UTF-8') # 符合字典的写入里面(创建一个标注式的文件)
listFile = open("1000万分解01里的复合词集合.txt", "w",encoding='UTF-8') # 提取的复合词列表
while True:
str = srcFile.readline() # 读取一个自然段,存入str
str = str.replace('[', ' ').replace(']', ' ')
str = str.replace(' ', ' ').replace(' ', ' ').replace(' ', ' ').replace('=', ' ')
n = 0
if str == '000000': # 判断结尾标记,发现六个零就结束运行
break
if '年级' in str: # 判断年级分册标记,遇到年级分册标记就将其写入复合词列表,txt
listFile.write(str + '\n')
print(str) # 调试用的,可删除此句
s = str.split('.') # 将str以句号‘.’分隔符,分隔成若干句子,存入列表s
for words in s: # 在句子列表中,依次提取每个句子
ss = words.split(' ') # 将提取的句子以空格为分隔符,分割成词序列列表
while len(ss) > 0: # 当词列表长度大于零时,
sss = ss[:] # 将其转存入sss列表中
n = n + 1
while len(sss):
# 对比从这里开始
keys = ' '.join(sss) # 将sss列表中插入空格符恢复成短语
print(keys) # 调试用的,可删除此句
if keys in txtDict: # 如果此短语在复合词词典中存在
w = ' ' + '&'.join(keys.split(' ')) + txtDict[keys][0:3]
destFile.write(w) # 在标注后的文本文件中插入'&'并写入
listFile.write(w + '\n') # 在标复合词列表文件中并写入此复合词
del ss[0:len(sss)] # 并将其从ss列表中删除
print('&'.join(keys.split(' ')), txtDict[keys][0:3]) # 调试用的,可删除此句
del sss[len(sss) - 1] # 如果复合词辞典中没有词短语,从后面删除一个字继续比较,直到最后一个字
if n == 1: # 当s中的句子只有一个字的时候将其直原样接写入标注后的文本文件中
m = ss[0]
else: # 当s中的句子不是只有一个字的时候
if ss == []: # ss列表已经没有字就直接跳出此词句的循环查询
continue
else: # 将ss中的第一个字前加一个空格符赋值给m变量
m = ' ' + ss[0]
destFile.write(m) # 将m直原样接写入标注后的文本文件中
del ss[0] # 存入m后将ss中的第一个字删除
if n == 1: # 在n=1时给标注后的原文中补加句号‘.’
destFile.write('.')
print('全部完成!')
destFile.close() # 关闭标注后的文本文件
srcFile.close() # 关闭目标文本文件
listFile.close() # 关闭提取的复合词文本文件
没有数据文件,光这样看代码,很难找到错误。。。。。。。
|
最佳答案
查看完整内容
没有数据文件,光这样看代码,很难找到错误。。。。。。。
|