【问题标题】:Function always returning true despite expected false尽管预期为假,但函数始终返回真
【发布时间】:2021-08-17 05:27:17
【问题描述】:

我正在制作一个程序来检查字符串是否包含在 CSV 文件中;但是,即使该单词包含在文件中,我也会不断获得False 的值。为什么我的程序没有返回正确的值?

def IS_REGISTERED(avatarName: str):
    csv_list = []
    with open('battle_royale.csv', 'r') as source:
        battleRoyaleData = csv.reader(source, delimiter=',')
        for row in battleRoyaleData:
            csv_list.append(row)
        return any(avatarName in x for x in csv_list)
         

例如,使用包含以下数据的示例 CSV 文件:

'Avatar Name', 'Player Name', ' Player Number'
'LarchDew15', 'Emily', '1'
'Pinerain2', 'Hannah', '2'
'xOakenMaidx', 'Madison', '3'

如果我将'xOakenMaidx' 作为avatarName 的参数传递,尽管CSV 包含'xOakenMaidx' 的任何值,该函数仍返回false

【问题讨论】:

  • 另一方面,您可以只执行csv_list = list(csv.reader(source, delimiter=',')) 并跳过 for 循环。另外,不用if <some boolean condition>: return True else: return False,只做return <some some condition>,所以不用if -else语句,只做return not any(avatarName in x for x in csv_list)
  • 当单词包含在文件中时,预计此函数将返回True。从not any(...) 中删除not,如果它打算以相反的方式工作。
  • 您的代码完全按照编写的方式工作。如果您的输入参数不在任何行中,那么您将返回 True...
  • 好吧,现在它为 tree 返回 False,因此您可能需要更新您遇到的问题
  • CSV 数据值都被引用(单引号)。因此,您必须将它们包括在您的搜索条件中 - 例如IS_REGISTERED("'LarchDew15'")

标签: python python-3.x csv


【解决方案1】:

CSV 值包含原始查询中未包含的引号,这意味着值不匹配。感谢所有帮助过的人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多