如何在文本文件中搜索某个字符并说明其中的行和列

问题描述 投票:-3回答:2
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, ""))
python python-3.x csv
2个回答
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)。

我没有执行任何异常处理等以保持示例简短。请不要按原样使用;)

我希望这有帮助。如果没有,请告诉我。


0
投票

你的例子有各种各样的混乱。您已经使用了一些非常高级的结构,例如。当你开始学习编程时,我肯定会尝试使用婴儿步骤。以下是一些可以满足您需求的代码:

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文件中查找特定值的事实与代码的功能无关。良好的命名使代码不仅更具可读性,而且更易于写入,因为它在您的脑海中阐明了变量持有的值。我希望这可以帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.