2015-01-11 2 views
1

Хорошо, я иду! Я, кстати, такой нуб, и я стараюсь учиться. мне пришлось написать немного кода, чтобы открыть файл CSV и формат списка таким образом, что он будет работать с Libsvm, но в любом случае это код, который я написал до сих пор:Как распечатать список с номерами индексов (python)?

import csv 
with open ('testingSeta.csv')as csvfile: 
reader = csv.reader(csvfile, delimiter = ',') 
for i in reader: 
    i.insert (0, i.pop(13)) 
    print (" ".join(i)) 

и это дает мне список, как это:

-1 0 1 1 0 1 1 1 4 5 6 5 5 8 
-1 0 1 0 0 1 1 1 4 3 7 1 3 6 
1 3 7 2 0 4 4 1 41 46 86 20 18 48 
1 10 11 0 0 6 6 3 26 65 102 25 16 38 

testingSeta.csv оригинальный формат:

0,1,1,0,1,1,1,4,5,6,5,5,8,-1 
0,1,0,0,1,1,1,4,3,7,1,3,6,-1 
3,7,2,0,4,4,1,41,46,86,20,18,48,1 
10,11,0,0,6,6,3,26,65,102,25,16,38,1 

Я хотел бы, чтобы список можно заказать так:

-1 1:0 2:1 3:1 4:0 5:1 6:1 7:1 8:4 9:5 10:6 11:5 12:5 13:8 
-1 1:0 2:1 3:0 4:0 5:1 6:1 7:1 8:4 9:3 10:7 11:1 12:3 13:6 
1 1:3 2:7 3:2 4:0 5:4 6:4 7:1 8:41 9:46 10:86 11:20 12:18 13:48 
1 1:10 2:11 3:0 4:0 5:6 6:6 7:3 8:26 9:65 10:102 11:25 12:16 13:38 

нумерация '1:' всегда должна начинаться со второго номера/значения. Может ли любой орган помочь? спасибо за ваше время

+0

Пример содержания testingSeta.csv будет ueseful. – Marcin

+0

сделано. добавлено в сообщение – Ash

+1

не использовать вставлять просто срез, вам также следует использовать перечисление –

ответ

1
with open('testingSeta.csv') as f: 
    for line in csv.reader(f): 
     print(' '.join(
       [line[-1]] + 
       ['{0}:{1}'.format(*x) for x in enumerate(line[:-1], start=1)])) 


-1 1:0 2:1 3:1 4:0 5:1 6:1 7:1 8:4 9:5 10:6 11:5 12:5 13:8 
-1 1:0 2:1 3:0 4:0 5:1 6:1 7:1 8:4 9:3 10:7 11:1 12:3 13:6 
1 1:3 2:7 3:2 4:0 5:4 6:4 7:1 8:41 9:46 10:86 11:20 12:18 13:48 
1 1:10 2:11 3:0 4:0 5:6 6:6 7:3 8:26 9:65 10:102 11:25 12:16 13:38 
+0

приятное простое решение –

+0

@jamylak большое спасибо, как я могу записать это в новый файл? – Ash

1

попробовать так:

>>> with open('your_file') as f: 
...  for x in f: 
...   line = x.strip().split(',') 
...   print "{} ".format(line[-1]) + " ".join("{}:{}".format(i,y) for i,y in enumerate(line[:-1],start=1)) 
... 
-1 1:0 2:1 3:1 4:0 5:1 6:1 7:1 8:4 9:5 10:6 11:5 12:5 13:8 
-1 1:0 2:1 3:0 4:0 5:1 6:1 7:1 8:4 9:3 10:7 11:1 12:3 13:6 
1 1:3 2:7 3:2 4:0 5:4 6:4 7:1 8:41 9:46 10:86 11:20 12:18 13:48 
1 1:10 2:11 3:0 4:0 5:6 6:6 7:3 8:26 9:65 10:102 11:25 12:16 13:38 
1
>>> with open ('testingSeta.csv') as csvfile: 
...  reader = csv.reader(csvfile, delimiter = ',') 
...  for i in reader: 
...   last = i.pop(13) 
...   for index,string in enumerate(i) : 
...    i[ index ] = str(index+1) + ":" + string 
...   print last + " " + " ".join(i) 
... 
-1 1:0 2:1 3:1 4:0 5:1 6:1 7:1 8:4 9:5 10:6 11:5 12:5 13:8 
-1 1:0 2:1 3:0 4:0 5:1 6:1 7:1 8:4 9:3 10:7 11:1 12:3 13:6 
1 1:3 2:7 3:2 4:0 5:4 6:4 7:1 8:41 9:46 10:86 11:20 12:18 13:48 
1 1:10 2:11 3:0 4:0 5:6 6:6 7:3 8:26 9:65 10:102 11:25 12:16 13:38 
+0

OMG OMG OMG UPASANA! ТЫ АНГЕЛ! ланканы идут тяжело! большое спасибо. большая любовь. – Ash

+0

Кто-то УПРАВЛЯЕТ ее! – Ash

+0

@Ash Вы не должны использовать вставку простого 'end, rest = row [-1:], row [: - 1]' будет извлекать последний элемент и все до последнего, и перечисление в значительной степени идеально подходит для получения indexes –