Извлечение целых чисел из смешанного списка

Я пытаюсь прочитать из файла 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("'", ""))

Ошибка для 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 ответа

Ты пытался:

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

Таким образом, вы можете убедиться, что ваш строковый аргумент на самом деле числовой, прежде чем передать его int(),

Я вижу, что ваш номер заключен в '' как '123', и когда вы пытаетесь читать на python, он читается как '' 123 '' в переменной

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

затем

num = int(temp)

Какую ошибку вы получаете именно? вы не должны получить сообщение об ошибке, если вы пытаетесь преобразовать фактическую числовую строку. Попробуйте попытаться поймать блок, чтобы увидеть, что происходит.

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]
Другие вопросы по тегам