Извлечение целых чисел из смешанного списка
Я пытаюсь прочитать из файла CSV, извлечь некоторые значения и скопировать их в уже существующий файл.
Строки в моем файле выглядят так:
row = ['success', '9358', 'MC', '9363.0', 'MC', '1.001', '9363.0', 'MC', '1.001']
Я пытаюсь извлечь целое число 9358, и я попытался следующие вещи:
int(row[1])
map(int, row[1])
map(int, row['1'])
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]