2016-07-27 12 views
0

空白で区切られた.txtファイルの内容を列に対応する別のリストにコピーしようとしていますが、これを解決する方法が見つかりませんでした。空白で区切られた文字列をリストにコピーする

.txtファイルのサンプルはこれです:

Product 6153990c-14fa-47d2-81cf-a253f9294f96 - Date: 2016-06-29T09:47:27Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 3.08 GB 

Product cac95c2a-2d6e-477a-848f-caccbd219d39 - Date: 2016-06-29T09:47:27Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 6.32 GB 

Product c65147d3-ee3c-4f33-9e09-ea234d3543f7 - Date: 2016-06-29T09:40:32Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 4.00 GB 

Product fd1860e3-5d57-429e-b0c7-628a07b4bd5c - Date: 2016-06-27T09:03:49Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 6.25 GB 

Product ba8e4be4-502a-4986-94ce-d0f4dec23b5c - Date: 2016-06-27T09:03:49Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 5.52 GB 

Product b95cb837-6606-484b-89d6-b10bfaead9bd - Date: 2016-06-26T09:30:35Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 5.81 GB 

Product 96b64cfe-fc2e-4808-8356-2760d9671839 - Date: 2016-06-26T09:30:35Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 6.14 GB 

Product 20bb3c9e-bd15-417a-8713-3ece6090dd95 - Date: 2016-06-24T08:51:49Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 4.89 GB 

Product 5bf78d9b-a12b-4e54-aba7-299ae4ac0756 - Date: 2016-06-24T08:51:49Z, Instrument: MSI, Mode: , Satellite: Sentinel-2, Size: 5.93 GB 

私はスペース区切り文字を使用してファイルを分割する場合は、列になります(カンマはいくつかの列に含まれています):

Product 
59337094-226a-4d64-94b1-3fee5f5cbfe2 
- 
Date: 
2016-07-26T09:30:38Z, 
Instrument: 
MSI, 
Mode: 
, 
Satellite: 
Sentinel-2, 
Size: 
5.07 
GB 

私がやってみたことは(最初の列の一例)である。

list = [] 
with open('D:\GIS\Sentinel\cmd_output.txt', 'r') as file: 
    reader = csv.reader (file, delimiter = ' ') 
    for a,b,c,d,e,f,g,h,i,j,k,l,m,n in reader: 
     list.append(a) 
print list 

しかし、それは動作し、エラーを送信しません:

ValueError: need more than 1 value to unpack

どのように私は、ファイル内の列ごとにこれを行うことができますか? ありがとう!

+1

正しい区切り文字を使用していることが確かな場合は、不具合行を処理するためにアンパックする部分を 'try-except'で囲みます。 – Kasramvd

+0

私はそれを行う方法がわかりません。私はPythonの上級ユーザーではありません。 – Litwos

+0

実際のトレースバックを表示できますか?なぜあなたはちょうどaを追加していますか?それは、それが見える価値 '商品'を保持していますか? –

答えて

1

あなたが考える形状を持っていないあなたのreader変数は、以下を参照してください。 https://docs.python.org/2/library/csv.html#csv.reader 「csvファイルから読み込む各行は、文字列のリストとして返されます」

だからあなたはおそらくあなたの最初の列のために試してみてください:

list = [] 
with open('D:\GIS\Sentinel\cmd_output.txt', 'r') as file: 
    reader = csv.reader (file, delimiter = ' ') 
    for row in reader: 
     list.append(row[0]) 
print list 
+1

これはうまくいくと私はRhaul KPの答えよりも速いと思います。 – Litwos

+0

助けてくれてうれしい! – Daneel

1

あなたはこのような基本的なsplitでこれを実装することができます。

file_pointer = open('a.txt') 
text = file_pointer.read() 
major_list = [] 
filtered_list = [i for i in text.split('\n') if i] 
for item in filtered_list: 
    major_list.append(item.split()) 
first_row = [item[0] for item in major_list] 
second_row = [item[1] for item in major_list] 
#As may you want. 
関連する問題