复制他人代码仍遇IndexError: list index out of range问题求助
解决CSV遍历中的IndexError问题
问题原因
你的CSV文件里存在空行(包括文件末尾的空行),导致existing_clients列表里混入了空的子列表[]。当你用[x[0] for x in existing_clients]访问空列表的索引0时,自然会触发IndexError: list index out of range。
解决方案
方案1:读取时过滤空行
修改读取CSV的代码,只把非空的行加入列表:
import csv existing_clients = [] with open("mock_data.csv") as csvfile: reader = csv.reader(csvfile) for row in reader: # 只保留非空行 if row: existing_clients.append(row)
方案2:提取元素时加判断
如果不想改动读取代码,就在提取第一个元素前先检查行是否非空:
first_name = input("Please enter the client's first name, note that the search function is case sensitive:") # 仅对非空行提取第一个元素 name = [x[0] for x in existing_clients if x] print(name)
额外优化
如果你的CSV文件有表头(比如第一行是列名),记得跳过表头行,避免把表头当成数据处理:
import csv existing_clients = [] with open("mock_data.csv") as csvfile: reader = csv.reader(csvfile) # 跳过表头行 next(reader) for row in reader: if row: existing_clients.append(row)
内容的提问来源于stack exchange,提问作者Nikita Kemp
相关产品推荐
相关产品推荐

