如何在字典键上使用正则匹配?解决‘期望字符串/字节对象’错误
解决字典正则匹配错误并实现需求
错误原因
你把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("没找到符合规则的列名")
代码说明
- 先遍历
csvreader.fieldnames获取所有表头列名,找到匹配正则的列后就停止循环,避免重复判断 - 遍历每一行时,直接通过列名
target_col提取对应的值,存入列表 - 最后用
','.join(values)把所有值拼接成字符串,再按你想要的格式输出
内容的提问来源于stack exchange,提问作者user2333234
相关产品推荐
相关产品推荐

