Чтобы подвести итог моей проблемы, я использую цикл for для чтения и обработки текстового файла csv. Я хотел бы создать новый столбец, и этот столбец должен быть результатом другого поля, разделенного другим полем в том же входном файле. Дело в том, что когда этот процесс выдает ошибку (из-за того, что: x / 0 математически невозможен или строка / строка не может быть разделена), строки, дающие ошибку, полностью удаляются из выходного файла. Я планировал использовать try, за исключением функций finally, чтобы обработать эту ошибку и оставить строки (выдающие ошибку) без изменений.
здесь ввод:
here is my code:
## Author – Caner Ferhatoglu - canerf@iastate.edu
## 10.19.2092
## Python 2.7.16
## Purpose was Assignment 4 that Dr. Gelder forced us to do. It was not all bad though
## as I learned a bit how to manipulate csv files.
## Putting the info above got me [10 pt :)] and putting comments where necessary got me another [10 pt :)]
## Import goods
import os, sys
import numpy as np
### Input and output files paths
input_file = r'C:\Users\17067\Box\Courses\CRP 456\Assignment_4\Select50.txt'
output_file = r'C:\Users\17067\Box\Courses\CRP 456\Assignment_4\updated_parcel.txt'
## open input and output files and create as objects
ifo = open(input_file, 'r')
ofo = open(output_file, 'w')
## First I need to convert each line of string to a list of items
for each_line in ifo:
## Read each line [10 pt :)]
sys.stdout.write(each_line)
## parse input string into a list delimited by commas
data = each_line.split(",")
### 3 del functions below removes ALL the data after the LegalDesc column and empty columns (HouseNbrEx and DirSuf) -> [20 pt :)]
del data[37:]
del data[5]
del data[11]
### Capitalize each word in full address column [10 pt :)]
data[3] = data[3].title()
data[35] = data.insert(35, 0)
### Create a column called "LVPerSqFt"
data[35] = "LVPerSqFt" ### Create a column called "LVPerSqFt"
### Use try, except, and finally to eliminate process where it gives errors (10 points)
try:
## This column gets the value of the value listed in the “LandValue” column divided by the value listed in the “LotSqFt” column for each row. [10 pt]
data[35] = float(data[25])/float(data[22])
ofo.write(str(data) + '\r\n')
except:
pass
finally:
print("Califragilisticexpialidocious")
ifo.close()
ofo.close()
проблемные строки удалены с выхода