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, ""))
假设我们有一个非常简单的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)。
我没有执行任何异常处理等以保持示例简短。请不要按原样使用;)
我希望这有帮助。如果没有,请告诉我。
你的例子有各种各样的混乱。您已经使用了一些非常高级的结构,例如。当你开始学习编程时,我肯定会尝试使用婴儿步骤。以下是一些可以满足您需求的代码:
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"))
在您的代码中,您有keyvalue作为输入,但从不使用它。相反,你要求在函数内部输入。这是不好的做法。您还将csv_file重新分配给file_name,这是不必要的。 'file_name'也接近'filename',可能会引起混淆。我甚至会质疑函数的名称,因为名称暗示你发现csv文件没有在csv文件中找到某些东西。由于此函数可以在任何文件中找到某些内容,因此我将使该名称更通用。您可能编写它以在CSV文件中查找特定值的事实与代码的功能无关。良好的命名使代码不仅更具可读性,而且更易于写入,因为它在您的脑海中阐明了变量持有的值。我希望这可以帮助你。