我收到了格式错误的 csv 文件(无法控制生成此 CSV 的应用程序)CSV 的标题和第一行如下所示:"Start Time""End Time""Service""255/06:06:54","255/06:54:42","S2 AVAIL"这是我用来读取 csv 的代码:import csvimport osimport sysrootPath = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..'))inputFile = open(rootPath + '\\input\\' + sys.argv[1], 'rt')sys.path.append(rootPath + '\\common') for row in csv.reader(inputFile, dialect='excel'): if row: print(row)这是我收到的输出:['"Start Time"']['End Time']['Service']['255/06:06:54', '255/06:54:42', 'S2 AVAIL']第一个问题是奇怪的字符(可能缺少编码选项?)标题也是错误的,不能在该格式上使用 DictReader,这对于我必须使用 CSV 进行的编辑很有用。我可以用正确格式的标题重新编写一个新的 CSV,这不是问题,但我不知道如何跳过 CSV 的前 3 行!?或者我可以用即将到来的 CSV 格式阅读它吗?这是我希望使用 csv.reader 获得的输出:['Start Time', 'End Time', 'Service']['255/06:06:54', '255/06:54:42', 'S2 AVAIL']或使用 csv.DictReader:OrderedDict([('Start Time', '255/06:06:54'), ('End Time', '255/06:54:42'), ('Service', 'S2 AVAIL')])
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
最后,我选择以正确的格式重写 CSV,然后使用它,在实现的解决方案中,新 CSV 中也忽略了 BOM 标记,无论如何,向我建议的有关 BOM 的链接包含该问题的修复程序!
这里是我的解决方案实现的代码:
import csv
import os
import sys
rootPath = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..'))
sys.path.append(rootPath + '\\common')
from function import *
inputFile = open(rootPath + '\\input\\' + sys.argv[1], 'r')
outputFile = open(rootPath + '\\input\\formatted.csv', 'w', newline='')
writeFile = csv.writer(outputFile)
writeFile.writerow(['StartTime','EndTime','Service'])
for row in csv.reader(inputFile.readlines()[3:], dialect='excel'):
if row:
writeFile.writerow(row)
inputFile.close()
outputFile.close()
添加回答
举报
0/150
提交
取消