2011-02-07 27 views
0

我有我讀txt文件:如何整個錶轉換從文本到詮釋

fdata =[] 
with open(fn,'rb') as fo: 
    for i in xrange(1): 
      fo.next() 
    for line in fo:      
      data = line.split(',') 
      data = data[:23] 
      fdata.append(data)  
    print fdata 

我想整個表從字符串轉換爲數字。並限制表格大小以讀取到XXX行。

+2

它看起來像你可能讀取一個csv文件 –

回答

2

爲了限制線,嘗試迭代使用計數器和readlines():(。在這種情況下的整數float()爲浮點)

maxlines = 100 
lines = f.readlines() 

if maxlines > len(lines): maxlines = len(lines) 

for i in xrange(maxlines): 
    line = lines[i] 

    # Do your stuff... 

將字符串轉換爲數字:

print '9000' == 9000 # False. 
print int('9000') == 9000 # True 

所以爲了讓你的表只包含整數,將每行(分割後)轉換爲一個整數。 int()只有返回一個整數,所以它不會修改你的變量。替換fdata.append(data))fdata.append(int(data()應該做的伎倆。


好的,要將整個列表轉換爲整數,只需遍歷這23個元素中的每一個將它們轉換爲整數。這適用於字符串的任意列表:

for element in data: 
    element = int(element) 

要轉換列表爲整數,但排除你的第一個元素,循環遍歷它:

for i in xrange(1, len(data)): # I used 1 because 0 is the first element. This skips it. 
    data[i] = int(data[i]) 
+0

如何使用int(???)整個表?我知道int('9000') - > 9000. – Merlin

+0

用'fdata.append(int(data))'替換'fdata.append(data)'使你的表格由整數組成。 – Blender

+0

int()參數必須是字符串或數字,而不是'list' – Merlin

2
from itertool import islice 
fdata =[] 
with open(fn,'rb') as fo: 
    for i in xrange(1): 
      fo.next() 
    for line in islice(fo,0,XXX):      
      data = line.split(',') 
      data = data[:23] 
      fdata.append(map(int,data))  
    print fdata 
+0

我認爲OP不會明白'islice()'和'map()'函數是做什麼的。但爲了向我展示'map()'做了什麼! – Blender

+0

@Blender,以及文檔是非常好的,不難發現:) –

+0

如果只是它有點更有條理。這是我想念PHP的一件事...... – Blender