我正在尝试从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')
答案 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)