Пропустить заголовки при редактировании csv-файла с помощью Python



Я использую ниже указанный код для редактирования csv с помощью Python. Функции, вызываемые в коде, образуют верхнюю часть кода.



проблема: я хочу, чтобы приведенный ниже код начал редактирование csv из 2-й строки, Я хочу, чтобы он исключал 1-ю строку, содержащую заголовки. Сейчас он применяет функции на 1-й строке и моя строка заголовка изменится.



in_file = open("tmob_notcleaned.csv", "rb")
reader = csv.reader(in_file)
out_file = open("tmob_cleaned.csv", "wb")
writer = csv.writer(out_file)
row = 1
for row in reader:
row[13] = handle_color(row[10])[1].replace(" - ","").strip()
row[10] = handle_color(row[10])[0].replace("-","").replace("(","").replace(")","").strip()
row[14] = handle_gb(row[10])[1].replace("-","").replace(" ","").replace("GB","").strip()
row[10] = handle_gb(row[10])[0].strip()
row[9] = handle_oem(row[10])[1].replace("Blackberry","RIM").replace("TMobile","T-Mobile").strip()
row[15] = handle_addon(row[10])[1].strip()
row[10] = handle_addon(row[10])[0].replace(" by","").replace("FREE","").strip()
writer.writerow(row)
in_file.close()
out_file.close()


Я пытался решить эту проблему путем инициализации row переменная 1 но это не работа.



пожалуйста, помогите мне в решении этого вопроса.

939   3  

3 ответов:

код reader переменная является итерационной, путем циклического перебора вы получаете строки.

чтобы пропустить один элемент перед циклом, просто позвоните next(reader, None) и игнорировать возвращаемое значение.

вы также можете немного упростить свой код; используйте открытые файлы в качестве контекстных менеджеров, чтобы они автоматически закрывались:

with open("tmob_notcleaned.csv", "rb") as infile, open("tmob_cleaned.csv", "wb") as outfile:
   reader = csv.reader(infile)
   next(reader, None)  # skip the headers
   writer = csv.writer(outfile)
   for row in reader:
       # process each row
       writer.writerow(row)

# no need to close, the files are closed automatically when you get to this point.

если вы хотите записать заголовок в выходной файл необработанным, это тоже легко, передайте вывод next() to writer.writerow():

headers = next(reader, None)  # returns the headers or `None` if the input is empty
if headers:
    writer.writerow(headers)

учитывая "фу.КШМ" следующим образом:

FirstColumn,SecondColumn
asdf,1234
qwer,5678

используйте диктофон следующим образом:

import csv
with open('foo.csv') as f:
    reader = csv.DictReader(f, delimiter=',')
    for row in reader:
        print(row['FirstColumn'])  # Access by column header instead of column number
        print(row['SecondColumn'])

делаешь row=1 ничего не изменится, потому что вы просто перепишете это с результатами цикла.

вы хотите сделать next(reader) пропустить одну строку.

Comments

    Ничего не найдено.