#python #csv
#python #csv
Вопрос:
Я хочу прочитать данные из файла CSV, но в моем выводе указано, что значения полей в строках «Отсутствуют». Он не распознает значения в моем файле CSV.
Есть идеи?
Вот код, который я использую :
import arcpy
import csv
arcpy.env.workspace = "D:"
csvfile = "D:/file.csv"
domains = []
rows = []
with open(csvfile, 'r') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
try:
domains.append(row.get('domain'))
rows.append(row)
except KeyError:
rows = [row]
domains = list(set(domains))
print("Identified %s unique domains" % len(domains))
print("Identified %s codes" % len(rows))
print("Creating codes:")
for row in rows:
print("%st%st%s" % (row.get('domain'), row.get('code'), row.get('code_description')))
Вот пример моего csv-файла, очень простой и с разделителями табуляции.
Комментарии:
1. Пожалуйста, исправьте отступ. Кроме того, вы можете захотеть преобразовать
domains
в набор с самого начала вместо добавления в список.2.
some_dict.get('some_key')
никогда не вызовет aKeyError
, он вернетсяNone
, если не сможет его найти. попробуйте заменить его наdomains.append(row['domain'])
.3. синтаксическая ошибка…
Ответ №1:
Помимо проблем с отступами, попробуйте выполнить следующую модификацию:
import arcpy
import csv
arcpy.env.workspace = "D:"
csvfile = "D:/file.csv"
domains = set()
rows = []
with open(csvfile, 'r') as csvfile:
reader = csv.DictReader(csvfile, delimiter=';')
for row in reader:
try:
domains.add(row['domain'])
rows.append(row)
except KeyError:
print("Couldn't parse", row)
print("Identified %s unique domains" % len(domains))
print("Identified %s codes" % len(rows))
print("Creating codes:")
for row in rows:
print("%st%st%s" % (row.get('domain'), row.get('code'), row.get('code_description')))
Комментарии:
1. Спасибо, но где-то в вашем коде есть синтаксическая ошибка
2. @Mar версия python?
3. это python27
4. Поддержка Python 2.7 была прекращена к январю 2020 года, вам определенно следует перейти на python 3. Я отредактировал его, чтобы удалить добавление python 3.6 (сейчас мы находимся в стабильной версии 3.8), f-strings.
5. да, вы правы, я должен в конечном итоге обновиться до python 3. следовательно, ваши обновления не работают, теперь мой csv реагирует как пустой, никаких результатов вообще!