【发布时间】: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