Извлекать определенные данные из файла csv в Python с пакетом csv

У меня есть 14000 строк с двумя полями в каждом CSV-файле, и я пытаюсь удалить некоторые строки, которые встречаются случайным образом. Я намерен сохранить все, кроме строк, содержащих любое из следующего: «Имя станции», «Код местоположения», «Параметр».

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

Я пытаюсь сделать следующее, но получаю точную копию исходных данных.

import csv
with open('combined_csv.csv', newline='') as inp, open('edited.csv', 'w', newline='') as out:
    writer = csv.writer(out)

    for row in csv.reader(inp):
        if row[0] != "Station Name" and "Location Code" and "Parameter":
            writer.writerow(row)

Любая помощь приветствуется

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш оператор if не будет работать так, как вы ожидали. Если вы хотите проверить, что строка не совпадает с несколькими строками, я рекомендую вам сделать это следующим образом:

if row[0] not in ("Station Name", "Location Code", "Parameter"):
    writer.writerow(row)

Обновление

Your version works well but why is mine not working?

if row[0] != "Station Name" and "Location Code" and "Parameter":

Вы пытаетесь проверить, что row[0] не равно "Station Name" and "Location Code" and "Parameter".

Давайте распечатаем это:

>>>"Station Name" and "Location Code" and "Parameter"
'Parameter'

Почему? Проведем несколько экспериментов:

>>>"Station Name" and "Location Code" and "Test"
'Test'

>>>False and "Station Name" and "Location Code" and "Test"
False

>>>"" and "Station Name" and "Location Code" and "Test"
''

>>>"Station Name" and "Location Code" and "" and "Test"
''

Остались вопросы? Хорошо:

>>bool("Non-empty string")
True

>>>bool("")
False

Итак, ваш код эквивалентен

if row[0] != "Parameter":

Как правильно написать.

if row[0] != "Station Name" and row[0] != "Location Code" and row[0] != "Parameter":

Спасибо за ответ. Ваша версия работает хорошо, но почему моя не работает?

pietre 22.05.2019 16:52

@pba увидеть предложенный дубликат; это общая проблема

roganjosh 22.05.2019 17:01

@pba, я обновил свой ответ.

Olvin Roght 22.05.2019 17:29

Сейчас ясно. Спасибо!

pietre 22.05.2019 17:33

@pba, если вы хотите использовать мой вариант, лучше использовать вариант, предложенный в дублирующем вопросе с набором. Я имею в виду if row[0] not in {"Station Name", "Location Code", "Parameter"}:

Olvin Roght 22.05.2019 17:36

Другие вопросы по теме