2017-12-27 913 views
1

numbers.txt:要從一個txt文件導入到列表

5  6 
3  8 
9  10 

我想創建從numbers.txt列表,我的名單應該是[5,6],[3,8] ,[9,10]

但是我一直在輸出中得到\ t(數字之間)和\ n(最後,例如10 \ n等)。我該如何解決這個問題?我應該得到[5,6],[3,8],[9,10]

我的代碼是:

file=open("numbers.txt","r") 
l=[] 
for line in file: 
    l.append(line.split(',')) 

print(l) 

謝謝(注:標籤是每兩個數字之間用線)

+1

試試'line.split()'(沒有參數)? – glibdud

+1

當你的文件中沒有逗號時,你爲什麼要在','上分割? – Blorgbeard

回答

2

看起來像你有標籤\t分開的值。這是我的最愛:

with open('numbers.txt') as f: 
    # split the file by rows and rows by separator 
    l = [i.split('\t') for i in f.read().split('\n')] 

print(l) # [['5', '6'], ['3', '8'], ['9', '10']] 

With open...確保該文件後關閉。


其他替代方案將包括導入庫。 Numpy和熊貓是處理數組/數據/表/矩陣的兩個主要包。他們都會評估你的輸入(在這種情況下,它將被存儲爲整數)。 Numpy被Joran Beasley建議。

import numpy as np 
l = np.genfromtxt('numbers.txt').tolist() 

import pandas as pd 
l = pd.read_csv('numbers.txt', sep='\t', header=None).values.tolist() 

如果你需要它是整數或浮點數,下面改變代碼的其中之一:

l = [list(map(int,i.split('\t'))) for i in f.read().split('\n')] 
# [[5, 6], [3, 8], [9, 10]] 
l = [list(map(float,i.split('\t'))) for i in f.read().split('\n')] 
# [[5.0, 6.0], [3.0, 8.0], [9.0, 10.0]] 
0

我會用:

l.append(','.join(line.split())) 

split沒有參數會分裂你行通過空格,包含製表符或換行符。

0
dat = numpy.genfromtxt("numbers.txt") 

大概是我會做...

0

你可以試試這個:

print(list(map(lambda x:x.split(),open('file.txt','r')))) 

輸出:

[['5', '6'], ['3', '8'], ['9', '10']] 

PS:你可以看到這篇太多,如果你懷疑發生了什麼,如果你不close the file.