You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现输入DNI在CSV无匹配时打印错误提示的方法

Pandas处理CSV时判断DNI是否存在的实现方案

问题场景

作为Python新手,使用Pandas处理cheques.csv文件时,需要实现:当输入的DNI在CSV文件中无匹配数据时,打印错误提示并终止程序。尝试在第9行编写判断逻辑但未成功。

原始代码

import pandas as pd
from datetime import datetime

data = pd.read_csv('cheques.csv')
dt = datetime.now()

DNI = int(input('Ingrese su DNI: '))
if DNI != data[DNI]:
 print('DNI no existente')

tipoCheque = input('Ingrese el tipo de cheque (EMITIDO O DEPOSITADO): ').upper()
estadoCheque = input('Ingrese el estado del cheque (APROBADO, RECHAZADO o PENDIENTE): ').upper()

# str.contains revisa un dato tipo string
datoCliente = data[(data["DNI"] == (DNI)) & (data["Tipo"].str.contains(tipoCheque)) &(data["Estado"].str.contains(estadoCheque))]

salida = input('Ingrese el formato de salida de los datos(PANTALLA o CSV): ').upper()
if salida == 'PANTALLA':
 print(datoCliente)
elif salida == 'CSV':
 datoCliente.to_csv(f'{DNI}-{dt}.csv')
 print('Archivo CSV creado con éxito')

错误原因

原代码第9行的if DNI != data[DNI]:逻辑错误:

  • data[DNI]是尝试获取列名为输入DNI数值的列,而非检查输入的DNI是否存在于DNI列的数值集合中
  • 若CSV中不存在对应列名,会直接抛出KeyError;即使存在,也无法实现预期的判断逻辑

解决方案

通过检查输入的DNI是否在data['DNI']的数值列表中实现判断逻辑,同时导入sys模块用于终止程序:

核心修正代码

import sys

# 输入DNI后添加如下判断
DNI = int(input('Ingrese su DNI: '))
if DNI not in data['DNI'].values.tolist():
    print('DNI不存在,请重试')
    sys.exit()

完整修正代码

import pandas as pd
from datetime import datetime
import sys

data = pd.read_csv('cheques.csv')
dt = datetime.now()

DNI = int(input('Ingrese su DNI: '))
if DNI not in data['DNI'].values.tolist():
    print('DNI不存在,请重试')
    sys.exit()

tipoCheque = input('Ingrese el tipo de cheque (EMITIDO O DEPOSITADO): ').upper()
estadoCheque = input('Ingrese el estado del cheque (APROBADO, RECHAZADO o PENDIENTE): ').upper()

# str.contains 用于检查字符串内容
datoCliente = data[(data["DNI"] == DNI) & (data["Tipo"].str.contains(tipoCheque)) & (data["Estado"].str.contains(estadoCheque))]

salida = input('Ingrese el formato de salida de los datos(PANTALLA o CSV): ').upper()
if salida == 'PANTALLA':
 print(datoCliente)
elif salida == 'CSV':
 datoCliente.to_csv(f'{DNI}-{dt}.csv')
 print('CSV文件创建成功')

内容的提问来源于stack exchange,提问作者Bluzk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 14:03:12