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

使用Schwifty与Pandas验证IBAN时遇TypeError问题求助

IBAN验证问题的错误分析与解决办法

为啥会报错?

  • 第一个错误:IBAN()方法只能接受单个字符串,你直接把整个IBAN列(pandas的Series对象)传进去了,自然触发TypeError。
  • 第二个错误:str(df['IBAN'])不是把每个IBAN单独转成字符串,而是把整列的所有内容(包括索引、NaN这些)拼成了一个超级长的无效字符串,Schwifty肯定验证不通过,所以报了InvalidStructure。

正确的代码写法

用pandas的apply方法逐个处理每个IBAN,同时捕获异常返回具体验证说明:

import pandas as pd
from schwifty import IBAN
from schwifty.exceptions import SchwiftyException

importfile = 'bp.txt'

# 读取CSV时明确指定双引号为文本限定符,避免解析错误
df = pd.read_csv(importfile, sep=';', encoding='latin-1', quotechar='"')

def check_iban(iban_value):
    # 先处理空值或者非字符串的情况
    if pd.isna(iban_value) or not isinstance(iban_value, str):
        return "IBAN为空或格式无效"
    try:
        iban = IBAN(iban_value)
        # 验证通过的话可以返回更详细的信息,比如所属国家、BBAN部分
        return f"验证通过:国家代码{iban.country_code},BBAN码{iban.bban}"
    except SchwiftyException as error:
        # 验证失败时返回具体错误原因
        return f"验证失败:{str(error)}"

# 对IBAN列的每个值应用验证函数
df['IBAN_remarks'] = df['IBAN'].apply(check_iban)

重点说明

  • apply方法会遍历IBAN列的每一个值,单独传给验证函数,刚好匹配IBAN()只能处理单个字符串的要求。
  • 加了空值判断,避免NaN或者非字符串类型的条目触发额外错误。
  • 捕获Schwifty的所有异常,把具体错误信息返回,方便你定位每个IBAN的问题。
  • 读取CSV时指定quotechar='"',确保双引号包裹的内容被正确解析,不会因为分号在引号内导致列拆分错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:58:30