列表超出范围:我试图查看文件,但找不到错误所在
List out of range : I tried to look at the file but conot find where the error lied
我用我的文件尝试了这个脚本,它包含大约 16 列和 5243 行,
第一列分别是键(1到5243的整数),第二列是句子的值(句子可以很长到段落)
当我尝试使用小文件时,它可以与真实文件一起使用,但它不起作用。
# -*- coding: UTF-8 -*-
import codecs
import re
import os
import sys, argparse
import subprocess
import pprint
import csv
from itertools import islice
import pickle
try:
import treetaggerwrapper
from treetaggerwrapper import TreeTagger, make_tags
print("import TreeTagger OK")
except:
print("Import TreeTagger pas Ok")
from itertools import islice
from collections import defaultdict
#export le lexique de sentiments
pickle_in = open("dict_pickle", "rb")
dico_lexique = pickle.load(pickle_in)
# extraction colonne verbatim
d = {}
with open(sys.argv[1], 'r', encoding='cp1252',) as csv_file:
csv_file.readline()
for line in csv_file:
token = line.split(';')
d[token[0]] = token[1]
#print(d)
tagger = treetaggerwrapper.TreeTagger(TAGLANG='fr')
d_tag = {}
for key, val in d.items():
newvalues = tagger.tag_text(val)
d_tag[key] = newvalues
#print(d_tag)
d_lemma = defaultdict(list)
for k, v in d_tag.items():
for elem in v:
parts = elem.split('\t')
d_lemma[k].append(parts[2])
#print(d_lemma)
print('ok')
结果
import TreeTagger OK
Traceback (most recent call last):
File "CSV_dico.py", line 50, in <module>
d_lemma[k].append(parts[2])
IndexError: list index out of range
abordables ADJ abordable
sur PRP sur
le DET:ART le
marché NOM marché
. SENT .
Moins ADV moins
cher ADV cher
... PUN ...
25 NUM @card@
% SYM %
de PRP de
moins ADV moins
... PUN ...
C' NAM C'
est VER:pres être
quand ADV quand
-même ADJ même
moins ADV moins
qualitatif ADJ qualitatif
qu' KON que
un DET:ART un
seau NOM seau
! SENT !
不是解决方案,而是查找错误的提示:
尝试更改此部分:
# extraction colonne verbatim
d = {}
with open(sys.argv[1], 'r', encoding='cp1252',) as csv_file:
csv_file.readline()
for line in csv_file:
token = line.split(';')
d[token[0]] = token[1]
为此:
# extraction colonne verbatim
d = {}
with open(sys.argv[1], 'r', encoding='cp1252',) as csv_file:
csv_file.readline()
for line in csv_file:
token = line.split(';')
try:
d[token[0]] = token[1]
except:
print(line)
这应该会给你错误的标记行,你可以检查它是否有错误
我用我的文件尝试了这个脚本,它包含大约 16 列和 5243 行,
第一列分别是键(1到5243的整数),第二列是句子的值(句子可以很长到段落)
当我尝试使用小文件时,它可以与真实文件一起使用,但它不起作用。
# -*- coding: UTF-8 -*-
import codecs
import re
import os
import sys, argparse
import subprocess
import pprint
import csv
from itertools import islice
import pickle
try:
import treetaggerwrapper
from treetaggerwrapper import TreeTagger, make_tags
print("import TreeTagger OK")
except:
print("Import TreeTagger pas Ok")
from itertools import islice
from collections import defaultdict
#export le lexique de sentiments
pickle_in = open("dict_pickle", "rb")
dico_lexique = pickle.load(pickle_in)
# extraction colonne verbatim
d = {}
with open(sys.argv[1], 'r', encoding='cp1252',) as csv_file:
csv_file.readline()
for line in csv_file:
token = line.split(';')
d[token[0]] = token[1]
#print(d)
tagger = treetaggerwrapper.TreeTagger(TAGLANG='fr')
d_tag = {}
for key, val in d.items():
newvalues = tagger.tag_text(val)
d_tag[key] = newvalues
#print(d_tag)
d_lemma = defaultdict(list)
for k, v in d_tag.items():
for elem in v:
parts = elem.split('\t')
d_lemma[k].append(parts[2])
#print(d_lemma)
print('ok')
结果
import TreeTagger OK
Traceback (most recent call last):
File "CSV_dico.py", line 50, in <module>
d_lemma[k].append(parts[2])
IndexError: list index out of range
abordables ADJ abordable
sur PRP sur
le DET:ART le
marché NOM marché
. SENT .
Moins ADV moins
cher ADV cher
... PUN ...
25 NUM @card@
% SYM %
de PRP de
moins ADV moins
... PUN ...
C' NAM C'
est VER:pres être
quand ADV quand
-même ADJ même
moins ADV moins
qualitatif ADJ qualitatif
qu' KON que
un DET:ART un
seau NOM seau
! SENT !
不是解决方案,而是查找错误的提示:
尝试更改此部分:
# extraction colonne verbatim
d = {}
with open(sys.argv[1], 'r', encoding='cp1252',) as csv_file:
csv_file.readline()
for line in csv_file:
token = line.split(';')
d[token[0]] = token[1]
为此:
# extraction colonne verbatim
d = {}
with open(sys.argv[1], 'r', encoding='cp1252',) as csv_file:
csv_file.readline()
for line in csv_file:
token = line.split(';')
try:
d[token[0]] = token[1]
except:
print(line)
这应该会给你错误的标记行,你可以检查它是否有错误