2016-02-18 96 views
0

我想從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') 
+1

「但是其中每一個都會引發一些錯誤或其他錯誤。」 < - 不要讓我們猜測。什麼錯誤? – timgeb

+0

好吧,那你爲什麼要做'num1 = int(row [6])'而不是'num1 = int(row [1])'? – timgeb

+0

抱歉!真正的列表太長,無法發佈。我確定索引中沒有錯誤。 – user3262537

回答

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] 
+0

無法轉換 回溯(最近一次通話的最後一次): 文件「upv_c.py」,第33行,在 print'Unable to convert',row [5] – user3262537

0

你試過:

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

這種方式可以確保您的字符串參數實際上是數字將它傳遞給int()之前。

0

我看到你的號碼被封閉在「」像「123」 ,當你試圖在python讀取它的讀取在變量

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

然後

「‘123’」
num = int(temp)