【发布时间】:2016-05-03 10:44:38
【问题描述】:
我有一个用“|”分隔的 CSV。我正在尝试读取 CSV,按第 8 列排序,并将排序后的数据作为标准 CSV 输出到标准输出。问题是输入 CSV 中的某些行没有 8 列。可以完全跳过那些没有第 8 列的行。现在,当它遇到没有第 8 列的行时,它会抛出错误“列表索引超出范围”。如果我可以让它继续并忽略该行,那将是完美的。
任何帮助将不胜感激。当然愿意完全改变代码块。
with open(sys.argv[1]) as openFile:
reader = csv.reader((x.replace('\0','') for x in openFile), delimiter='|')
col = 8
sortedReader = sorted(reader, key=lambda k: (k[col] is None, k[col] == "", k[col]), reverse=True) # This was my attempted solution found on Google/StackOverflow. Does not work.
csvout = csv.writer(sys.stdout, delimiter=',')
for row in sortedReader:
try:
csvout.writerow(row)
except:
sys.stderr.write('[!] Error in row')
sys.stderr.write(row)
continue
【问题讨论】:
-
“继续并忽略该行”是指丢弃该行吗?
-
是的,我的意思是丢弃该行。