繁体   English   中英

Python 在 csv 列中搜索字符串并在另一个 csv 文件中写入行

[英]Python search for string in csv columns and write row in another csv file

我对编码还很陌生,但我试图编写一个读取 csv 文件的代码,以检查用户输入的字符串是否在特定列中,然后在单独的 csv 文件中写出字符串所在的行. 问题是当我运行代码时,它只打印出 1 行而不是其中包含字符串的多行。 我也试图让它不区分大小写,但不知何故它也不起作用。

我的代码现在看起来像这样:

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)

非常需要任何帮助或建议!

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")

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM