Python поиск строки в столбцах csv и запись строки в другом файле csv - PullRequest
0 голосов
/ 06 мая 2020

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

Мой код сейчас выглядит так:

import csv
shape = input("Type in a shape ")
color = input("Type in a color")
with open("directory.csv", "r") as f:
    csvreader = csv.reader(f, delimiter=",")
    for row in csvreader:
      if shape.lower() in row[7] and color.lower() in row[6] :
         with open("data.csv", "w") as file:
            writer = csv.writer(file, lineterminator = "\n")
            writer.writerow(row)

Очень нужна любая помощь или предложения!

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

data.csv усекается каждый раз, когда открывается в режиме 'w', поэтому он будет содержать только последнее совпадение. Перемещение оператора open в начало кода устраняет проблему.

import csv
shape = input("Type in a shape ")
color = input("Type in a color")
with open("directory.csv", "r") as f, open("data.csv", "w") as file:
    csvreader = csv.reader(f, delimiter=",")
    for row in csvreader:
        if shape.lower() in row[7] and color.lower() in row[6] :
            writer = csv.writer(file, lineterminator = "\n")
            writer.writerow(row)

В качестве альтернативы файл может быть открыт в режиме 'a' (добавление), и тогда существующие строки в файле будут сохранено:

import csv
shape = input("Type in a shape ")
color = input("Type in a color")
with open("directory.csv", "r") as f:
    csvreader = csv.reader(f, delimiter=",")
    for row in csvreader:
      if shape.lower() in row[7] and color.lower() in row[6] :
         with open("data.csv", "a") as file:
            writer = csv.writer(file, lineterminator = "\n")
            writer.writerow(row)
0 голосов
/ 06 мая 2020

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

import pandas as pd
df = pd.read_csv("directory.csv")
df1 = df[df["column1"] == shape & df["column2"] == color]
df1.to_csv("found_data.csv")
...