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

如何在字典键上使用正则匹配?解决‘期望字符串/字节对象’错误

解决字典正则匹配错误并实现需求

错误原因

你把csv.DictReader返回的字典对象直接传给了re.match,但这个方法要求第二个参数必须是字符串或字节类型,所以才会抛出expected string or bytes-like object, got 'dict'的错误。

解决方案步骤

  • 先从CSV表头里筛选出符合正则规则的列名(表头固定,只需要找一次就行)
  • 遍历每一行数据,提取目标列对应的所有值
  • 最后按照列名:值1,值2,...的格式输出结果

修正后的代码

import csv
import re

regex = r"^REP\W+BGR30$"
target_col = None

with open('fbg3.csv', 'r') as file:
    csvreader = csv.DictReader(file)
    # 先从表头找到匹配的目标列
    for col in csvreader.fieldnames:
        if re.match(regex, col):
            target_col = col
            break
    # 收集目标列的所有值并输出
    if target_col:
        values = []
        for row in csvreader:
            values.append(row[target_col])
        print(f"{target_col}:{','.join(values)}")
    else:
        print("没找到符合规则的列名")

代码说明

  1. 先遍历csvreader.fieldnames获取所有表头列名,找到匹配正则的列后就停止循环,避免重复判断
  2. 遍历每一行时,直接通过列名target_col提取对应的值,存入列表
  3. 最后用','.join(values)把所有值拼接成字符串,再按你想要的格式输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:36:29