def find_csv(filename, keyvalue):
with open(filename, "r") as csv_file:
file_name = csv_file
keyvalue = input("please enter what you would like to find in the file: ")
file = file_name.read()
file = file.strip(",")
xxx = input("please enter the file: ")
print(find_csv(xxx, ""))
答案 0 :(得分:1)
假设我们有一个非常简单的csv(simple.csv):
bla,blub,bleb
helo,hallo,bye
wow,wuw,wiw
我修改了您的代码以使用标准的python csv库:
import csv
def find_csv(filename, keyvalue):
with open(filename, "r", newline='') as csv_file:
csv_reader = csv.reader(csv_file)
for row_idx, row in enumerate(csv_reader):
for col_idx, col in enumerate(row):
if keyvalue in col:
return row_idx, col_idx
print(find_csv("simple.csv", "wuw"))
此代码段的结果是:(2, 1)
(索引从0开始,但是如果愿意,您可以简单地加1)。
为了简化示例,我没有执行任何异常处理。请不要按原样使用;)
我希望这会有所帮助。如果没有,请告诉我。
答案 1 :(得分:0)
您的示例发生了种种混乱。您已经使用了一些非常高级的构造,例如with。当您开始学习编程时,我肯定会尝试使用婴儿步骤。这是一些可以满足您需求的代码:
def find_csv(filename, string_to_find):
with open(filename, "r") as csv_file:
line = 0
for text in csv_file.readlines():
line += 1
char = text.find(string_to_find)
if char >= 0:
return 'string found at line %s, character %s'%(line, char)
return "string not found"
file_to_look_in = "temp.py"
print(find_csv(file_to_look_in, "find_csv"))
在您的代码中,您有键值作为输入输入,但从不使用它。相反,您要求在函数内部输入。这是不好的做法。您还可以将csv_file重新分配给file_name,这是不必要的。另外,“ file_name”接近“ filename”,并且可能引起混乱。我什至会质疑函数的名称,因为该名称暗示您正在找到一个csv文件,而不是在csv文件中找不到任何东西。由于此功能可以在任何文件中找到某些内容,因此我将使名称更通用。您可能将其编写为在CSV文件中查找特定值的事实与代码的功能无关。好的命名方式不仅使代码更具可读性,而且使代码更易写,因为它可以在您的头脑中阐明变量所具有的价值。希望对您有帮助。