У меня есть файл csv в формате:
text, class
text0,class0
text1,class1
..., ...
Импорт файла и размещение столбцов в списках:
textt=data['text']
classs=data['class']
Затем я запускаю скрипт, который классифицирует каждую часть текста на две категории.
for i in textt:
#classify text
text_class=#guessed_text_class
Я хочу сравнить text_class с классом каждой строки и сделать:
if text_class==class:
print('correct')
edit: example: csv файл выглядит следующим образом:
text, class
'I hate Billy', 'Joe'
'I love Joe', 'Joe'
'I love Billy', 'Billy'
файл импортируется с помощью:
with open('csv_file', 'rU') as infile:
reader=csv.DictReader(infile)
data={}
for row in reader:
for header, value in row.items():
try:
data[header].append(value)
except KeyError:
data[header]=[value]
textt = data ['Text'] classes = data ['Class']
каждое предложение в столбце "текст" классифицируется:
for i in textt:
#classifies text
text_class=#guessed text class
моя попытка найти, правильно ли text_class:
for i in range(len(textt))
if i=text_class:
print('correct')
Однако это заканчивает сравнение последнего элемента класса в списке, в данном случае "Билли", с элементами классов. Таким образом, это будет выглядеть так:
угаданные классы будут: "Джо", "Джо", "Билли",
но вместо сравнения:
'Joe'=='Joe'
'Joe'=='Joe'
'Billy'=='Billy'
он будет сравнивать:
'Billy'=='Joe'
'Billy'=='Joe'
'Billy'=='Billy'
Это то, что вы хотите достичь?
for txt, cls in zip(textt, classs):
if txt==cls:
print('correct')
else: print('wrong')
, он напечатал все как неправильное
Если вы используете функцию enumerate
вы можете проверить свой результат на той же самой итерации, предположив, что у вас одинаковый порядок в обоих списках.
for counter,i in enumerate(textt):
#classify text
text_class=#guessed_text_class
if text_class == classs[counter]:
print('correct')
IndexError: string index out of range
Предполагая, что списки имеют одинаковую длину и правильно упорядочены, вы можете просто запустить цикл от 0
до length-1
и сравнить свои классы.
for i in range(len(classs)):
if text_class == classs[i]:
print("yes")
В вашем случае я предполагаю, что вы захотите угадать класс и затем сравнить его в одном цикле. Таким образом, вы можете использовать приведенную ниже реализацию.
for i in range(len(classs)): # or len(textt). Since, I assume both would be same
text_class = guess(textt[i])
if text_class == classs[i]:
print("yes")
for i in textt
? Как начать цикл для использования обоих списков?
SyntaxError
которую поднимает последняя часть? Было бы легче ответить, если бы вы предоставили минимальный, полный и проверяемый пример .