Записать в CSV-файл с пустым элементом. Python / CSV - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь соскрести элементы со страницы. Если элемент (всегда второе имя) не существует, я могу легко использовать попытку /, кроме как пропустить его в скрипте ... пока он не попытается сохранить в csv. Я получу ошибку записи: NameError: name 'Middle' is not defined Как я могу просто сохранить 'NA' или пустое поле в CSV-файл?

import csv

First = #site element for first name
Last = #site element for last name

try:
   Middle = #site element for middle name
   print(Middle)
except:
   print('NA')

with open ('test.csv', 'a', newline="") as f:
        writer = csv.writer(f)
        writer.writerow([First,Last,Middle])

1 Ответ

0 голосов
/ 29 апреля 2020

Среднее никогда не устанавливается на что-либо, если оно не существует в вашей попытке, кроме блока (который вы действительно должны рассмотреть, исключая точную ошибку)

try:
   Middle = #site element for middle name
   print(Middle)
except:
   print('NA')

Итак, вы пытаетесь установите Middle на любой элемент, и если элемент не существует, вы просто игнорируете его. В вашем блоке исключений установите Middle в значение N / a вместо простой печати N / A:

try:
   Middle = #site element for middle name
   print(Middle)
except:
   Middle = "N/A"
   print('NA')

Это приводит к тому, что середине фактически назначено что-то, и, следовательно, он не выдаст ошибку, которую вы видите .

Как и в комментариях, вы должны определить середину вне блока try catch, чтобы избежать ошибки в области видимости:

import csv

First = #site element for first name
Last = #site element for last name
Middle = 'N/A' #this will be overwritten if Middle exists in the try except block below, otherwise it will be 'N/A'

try:
   Middle = #site element for middle name
   print(Middle)
except:
   print('NA')

with open ('test.csv', 'a', newline="") as f:
        writer = csv.writer(f)
        writer.writerow([First,Last,Middle])
...