从混合列表中提取整数

时间:2016-02-18 16:33:50

标签: python xlrd xlwt

我正在尝试从csv文件中读取,提取一些值并将它们复制到现有文件中。

我文件中的行如下所示:

row = ['success', '9358', 'MC', '9363.0', 'MC', '1.001', '9363.0', 'MC', '1.001']

我正在尝试提取整数值9358,我尝试了以下内容:

  1. int(row[1])
  2. map(int, row[1])
  3. map(int, row['1'])
  4. int(row[1].replace("'", ""))
  5. int(row[1])的错误是:

    Traceback (most recent call last):
      File "upv_c.py", line 26, in
        num1 = int(row[1])
          ValueError: invalid literal for int() with base 10: ''
    

    但是这些中的每一个都会引发一些错误或另一个错误。 知道怎么办呢?

    我的代码如下:

    #!/home/utils/Python-2.7/bin/python2.7
    import csv
    import xlwt
    import xlrd
    from xlutils.copy import copy
    book = xlrd.open_workbook('reg_test.xls')
    wb = copy(book) # a writable copy 
    w_sheet = wb.get_sheet(0)
    with open('results2.csv', 'r') as f:
        reader = csv.reader(f)
        next(reader, None)
        next(reader, None)
        next(reader, None)
        next(reader, None)
        i = 1
        for row in reader:
            num = map(int, row[1])
            w_sheet.write(i, 2, num)
            i += 1
    wb.save('reg_test.xls')
    

3 个答案:

答案 0 :(得分:0)

你得到了什么错误?如果您尝试转换实际的数字字符串,则不应该出错。尝试一下try catch块,看看发生了什么。

try:
for row in reader:
    num = map(int, row[5])
    w_sheet.write(i, 2, num)
    i += 1
except Exception, e:
    print 'Unable to convert', row[5]

答案 1 :(得分:0)

你试过了吗?

if row.isnumeric():
    my_var = int(row)

通过这种方式,您可以确保字符串参数在传递给int()之前实际上是数字。

答案 2 :(得分:0)

我看到你的电话号码附在'''喜欢' 123' 当你试图在python中阅读时,它被读作"' 123'"在一个变量

temp=row[1].replace("'","")

然后

num = int(temp)