读取CSV最后一行温度值报错:迭代器应返回字符串而非字节,求解决
解决读取CSV最后一行温度值时的字节/字符串错误问题
这个错误的根源很明确:你用**二进制模式('rb')**打开了CSV文件,但csv.reader需要处理的是文本模式下的字符串输入,二进制模式返回的是字节对象,所以触发了这个报错。
咱们直接修正代码,同时还能简化后续的处理步骤——你原来的join再split完全是多余的,csv.reader本身就会帮你把每行拆分成列表:
from collections import deque import csv def get_last_row(csv_filename): # 改成文本模式打开文件(去掉模式里的b) with open(csv_filename, 'r') as f: # 明确指定分隔符为空格(你的数据是空格分隔),确保解析准确 return deque(csv.reader(f, delimiter=' '), 1)[0] last_row = get_last_row('data.csv') # 温度值是行里的第2个元素(索引从0开始) print(last_row[1])
额外说明:
- 如果你的CSV实际是用制表符(
\t)分隔的,只需要把delimiter=' '改成delimiter='\t'就行。 - 你用
deque只保留最后一行的思路非常高效,不用加载整个文件到内存,适合处理大CSV文件。
内容的提问来源于stack exchange,提问作者Veenita Roy
相关产品推荐
相关产品推荐

