求助:使用Python CSV Writer去除CSV字符串引号及解决代码报错
解决CSV文件字符串外围引号问题及代码错误修正
错误原因分析
你代码中出现TypeError: '_csv.writer' object is not iterable的直接原因是遍历了csv.writer对象——csv.writer是用于写入的工具,不是可迭代的数据集,不能用for ... in writer的方式循环。此外,代码还存在变量名重复(多次使用lines)、未定义变量(row)以及逻辑顺序错误(先写入所有行再处理,完全无效)的问题。
正确解决方案:读取时去除引号
要去除CSV中字符串外围的引号,最佳时机是在读取并处理原始TXT数据的时候,而不是写入后再操作。直接对分割后的每个字段去除首尾的引号,再写入CSV即可。
修正后的完整代码
import csv with open('UPRN.txt', 'r') as in_file: stripped = (line.strip() for line in in_file) # 分割每行数据,同时去除每个字段首尾的单/双引号 lines = ( [field.strip("'\"") for field in line.split(",")] for line in stripped if line ) with open('UPRN.csv', 'w', newline='') as out_file: writer = csv.writer(out_file) # 写入表头 writer.writerow(('Name', 'UPRN','ADMIN_AREA','TOWN','STREET','NAME_NUMBER')) # 将处理后的所有行写入CSV writer.writerows(lines)
代码说明
field.strip("'\""):一次性去除字段首尾的单引号(')和双引号("),如果只需要去除单引号,可改为field.strip("'")。- 保持迭代器的使用(生成器表达式),避免一次性加载所有数据到内存,处理大文件更高效。
- 逻辑顺序清晰:先处理原始数据,再写入CSV,避免无效操作。
内容的提问来源于stack exchange,提问作者Geographos
相关产品推荐
相关产品推荐

