Здравствуйте, у меня возник вопрос о циклах. Теперь ситуация в том, что я получил файл csv, где я проверяю, есть ли в столбце3 (строка [2]) значение «1». Если не просто пропустить его и цикл снова сложить значения:Прокрутите строки csv и проверьте для определенного значения
i = 1
maxuserid = 7255
result_liked = []
with open('source/to/file/user_id%i.csv' %i,'r') as fin:
for row in csv.reader(fin, delimiter='\t'):
if int(row[2]) >= 1:
result_liked.append(row)
i += 1
else:
i += 1
#more code
Дело в том, что мне нужно для цикла, который работает весь код и после запуска завершена добавить значение «1» до моего i переменная.
Цель моего кода - запустить весь код и после его завершения. Я хочу добавить значение i от 1 до 2 и снова запустить цикл, пока не достигнут maxuserid 7255. Как я могу получить цикл, который делает это от 1 до 7255?
EDIT:
import csv
maxuserid = 7255
result_liked = []
for i in range(maxuserid):
with open('source/to/file/user_id%i.csv' %(i+1),'r') as fin:
for row in csv.reader(fin, delimiter='\t'):
if int(row[2]) >= 1:
result_liked.append(row)
training_data = result_liked[:2]
test_data = result_liked[2:]
training_data_bookid = [el[1] for el in training_data]
test_data_bookid = [el[1] for el in test_data]
#training_data_bookid_int = map(int, training_data_bookid) #python2
training_data_bookid_int = list(map(int, training_data_bookid)) #python3
test_data_bookid_int = list(map(int, test_data_bookid)) #python3
books_list = []
for j in range(0,2):
with open('source/to/file/output_new.csv', 'rt') as f:
reader = csv.reader(f, delimiter=',', quotechar='"')
for row in reader:
get_book_id = training_data_bookid_int[j]
if get_book_id == int(row[0]):
books_list.append([row[2],row[1]])
b = sorted(books_list, reverse=True, key=lambda x:int(x[0]))
c = [el[1] for el in b]
c_int = list(map(int, c))
check_training_vs_test = set(c_int) & set(test_data_bookid_int)
with open("result.txt", "a") as text_file:
text_file.write("Userid: %i || Liked: %s || Test: %f" % (i, len(test_data), len(check_training_vs_test)))
Вы можете завершить цикл с помощью 'if i> = maxuserid: break'. – martineau
Обновлен мой ответ – kvorobiev