2014-04-24 4 views
2

У меня есть текстовый файл, содержащий данные в следующей форме;Разделить многострочный текстовый файл на несколько строк csv-файл

100157 100157 
100157 364207 
100157 38848 
100157 bradshaw97introduction 
100157 bylund99coordinating 
100157 dix01metaagent 
100157 gray99finding 
... 
... 

Я пытаюсь преобразовать это в scikit читаемого набора данных, используя следующий метод:

datafile = open(filename.txt, 'r') 
data=[] 
for row in datafile: 
    data.append(row.strip().split('\t')) 

c1 = open(filename.csv, 'w') 
arr = str(data) 
c.write(arr) 
c.close 

Однако после выполнения этого кода получает данные выводятся в одной строке, тогда я намерен чтобы данные были разделены в формате csv аккуратно в строке и столбцах, как и в наборе данных Iris.

Могу ли я получить помощь относительно того, как я должен действовать? Благодарю.

+0

Пожалуйста, покажите нам, как результат должен выглядеть следующим образом. –

ответ

0

Поправьте меня, если я ошибаюсь, но мне кажется, что scikit readable dataset просто космические значения, разделенные с \n разделения строк?

Если да, то довольно легко:

Предположим, у вас есть этот файл:

100157 100157 
100157 364207 
100157 38848 
100157 bradshaw97introduction 
100157 bylund99coordinating 
100157 dix01metaagent 
100157 gray99finding 

разлуке с помощью вкладок.

Вы можете легко превратить его в пространство разделено новая строка с разделителями значение:

with open('/tmp/test.csv', 'r') as fin, open('/tmp/test.out', 'w') as fout: 
    data=[row.strip().split('\t') for row in fin] 
    st='\n'.join(' '.join(e) for e in data) 
    fout.write(st) 

print data 
# [['100157', '100157'], ['100157', '364207'], ['100157', '38848'], ['100157', 'bradshaw97introduction'], ['100157', 'bylund99coordinating'], ['100157', 'dix01metaagent'], ['100157', 'gray99finding']] 
print st 
100157 100157 
100157 364207 
100157 38848 
100157 bradshaw97introduction 
100157 bylund99coordinating 
100157 dix01metaagent 
100157 gray99finding 
+0

Ваш код работал отлично. Благодаря! – user3466132

2

Использование csv module:

import csv 

with open('filename.txt', 'r') as f, open('filename.csv', 'w') as fout: 
    writer = csv.writer(fout) 
    writer.writerows(line.rstrip().split('\t') for line in f) 

выходной файл CSV:

100157,100157 
100157,364207 
100157,38848 
100157,bradshaw97introduction 
100157,bylund99coordinating 
100157,dix01metaagent 
100157,gray99finding 
... 
+0

Это было быстро! Большое спасибо. – user3466132

+0

@ user3466132, Добро пожаловать в переполнение стека! Есть люди, которые пытались ответить на ваш вопрос. Если бы это помогло вам, вы можете рассказать об этом сообществу, приняв ответ [http://meta.stackexchange.com/a/5235], который был наиболее полезен для вас. – falsetru

+0

@falsetru не будет 'line.split()' достаточно? – cdhagmann

Смежные вопросы