#python #python-3.x
#питон #python-3.x #python
Вопрос:
Итак, у меня есть задание CS, которое мне нужно выполнить, и одна синтаксическая ошибка мешает мне двигаться дальше.
Я хочу распечатать строки в формате CSV, которые имеют значение Y во втором столбце, и если они есть, возьмите значение первого столбца и поместите его в словарь. Прямо сейчас я хочу заставить его просто распечатать словарь.
Однако я понятия не имею, почему, но это выдает мне ошибку синтаксиса.
Это то, что у меня есть до сих пор:
import csv
d = {}
#Scan mandatory categories
with open('MandatoryFlags.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
for row in csv_reader:
if line_count == 0:
line_count = 1
else:
if str(row[1]) = "Y":
d["MCat{0}".format(line_count)] = row[0]
else:
continue
line_count = 1
print(d)
Я не имею ни малейшего понятия, почему, но это возвращается:
File "C:/Users/Assoufi/PycharmProjects/ComputerScience/CSAssignment4.py", line 12
if str(row[1]) = "Y":
^
SyntaxError: invalid syntax
Могу я получить какую-нибудь помощь?
Комментарии:
1. Нет необходимости отвечать на это, ребята, голосуйте за закрытие простых опечаток
2. Я действительно не знал. Я постараюсь изо всех сил не совершать этих ошибок @Chris_Rands .
Ответ №1:
Вы, вероятно, имели в виду if str(row[1]) == "Y":
.
Сравнение в Python выполняется с двойным равенством ( ==
).
Если я могу вмешаться, ваш код было бы намного лучше использовать enumerate()
вот так:
d = {}
with open('MandatoryFlags.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
iterator = enumerate(csv_reader)
next(iterator) # Skip first line
for line_count, row in iterator:
if str(row[1]) == "Y":
d["MCat{0}".format(line_count)] = row[0]
Или даже короче:
with open('MandatoryFlags.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
iterator = enumerate(csv_reader)
next(iterator) # Skip first line
d = {f"MCat{n}": row[0] for n, row in iterator if str(row[1]) == "Y"}
Ответ №2:
Похоже, проблема в том, что вы использовали один знак равенства вместо двух в
if str(row[1]) = "Y":
Сравнение в Python выполняется с двумя знаками равенства:
import csv
d = {}
#Scan mandatory categories
with open('MandatoryFlags.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
for row in csv_reader:
if line_count == 0:
line_count = 1
else:
if str(row[1]) == "Y":
d["MCat{0}".format(line_count)] = row[0]
else:
continue
line_count = 1
print(d)
Ответ №3:
Я попробую разобраться с самой очевидной проблемой. Оператор if требует наличия двух знаков равенства.
Вместо: if str(row[1]) = "Y":
Попробуй это: if str(row[1]) == "Y":
Примечание: я не просматривал остальную часть кода… просто устраняю синтаксическую ошибку. Удачи!