从csv文件读取整数

时间:2018-03-14 22:25:11

标签: python csv writing

我在将csv文件中的数据作为整数读取时遇到了一些麻烦,下面是我的csv文件的示例:

Col1    Col2    Col3
Header  Header  Header
Header  1       1,000,000
BLANK   2       500,000
BLANK   3       200,000

我想要做的是阅读来自Col3'的数据。 (不包括标题)作为整数进入元组,下面是我的代码:

import csv
prizePoints = []
with open("csvfile.csv") as prizes:
    next(prizes)
    for row in prizes:
        prizePoints.append(row)

当我尝试这个时,我收到的错误是:

ValueError: invalid literal for int() with base 10: '"1'

打印行的示例:

['', '1', '1,000,000']    

我认为这是由于Col3'中的值。但是,有逗号,我不确定如何解决这个问题,所以任何帮助将不胜感激! (P.S.我不能改变Col3'的单元格格式,以便它们没有逗号)。

2 个答案:

答案 0 :(得分:3)

你在这里遇到了多个问题。

  • 在理解中,你做for row in prizes。由于prizes是文件对象,因此当您处理第一行时,这将消耗文件中的所有剩余行。
  • 同样的事情也隐藏了row的{​​{1}}。
  • 然后csv.reader split每个row。如果您执行了csv.reader部分,那么该行将是一个列表,而不是一个字符串,因此没有什么可以拆分。
  • 您的CSV标题显示为两行。你不要跳过标题。你很幸运第一个错误取消了这个错误,所以你永远不会试图将头部作为一个int来处理。
  • 然后,最后,您将尝试在int上致电1,000,000。这个很容易解决。对于快速和肮脏的解决方案,您只需执行int(s.replace(',', '')

答案 1 :(得分:0)

在解析数字时考虑使用locale模块 - 如果遇到某些区域切换千位和小数点分隔符的问题,这将有所帮助

https://stackoverflow.com/a/2954231/66349