КИ у вас есть беспорядок проблем с кодом:
- Ваших отступов все неправильно. Это одна из основных концепций python. Идите искать в Интернете и немного почитать об этом, если вы не понимаете, что я имею в виду
- Часть, которая открывает 'test2.txt', - это внутри цикла spamreader, то есть он снова открывается и усекается для каждого строка в 'test.csv'.
- Вы пытаетесь написать файл себе с этой строкой: writer.writerows (f) (помните? F - файл, который вы пишете ...)
- Вы используете csv.writer для записи строк до txt файл.
- Вы хотите интервал между каждым элементом, но вы не делаете, что где-нибудь в вашем коде
Так суммировать все эти проблемы, вот фиксированный пример, который на самом деле не так уж далеко от вашего кода как это:
import csv
res = []
# start a loop to collect the data
with open('test.csv') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
line = '\t'.join(row) + '\r\n' # the \n is for linebreaks. \r is so notepad loves you too
res.append(line)
# now, outside the loop, we can do this:
with open('test2.txt', 'wb') as f:
f.writelines(res)
EDIT
Если вы хотите, чтобы контролировать расстояние вы можете использовать ljust функцию следующим образом:
line = ''.ljust(2).join(row)
Это гарантирует, что между каждым предметом будет 2 пробела. пространство по умолчанию, но если вы хотите, чтобы указать, что ljust будет использовать вы можете добавить второй параметр к нему:
line = ''.ljust(5, '-').join(row)
, то каждая строка будет выглядеть следующим образом:
123456-----456789-----12345-----123.45-----123456
И спасибо за Филипп Т. который упомянул об этом в комментариях
2-Edit
Если вы хотите другую длину для каждого столбца необходимо предопределить его. Лучшим способом было бы создать список в той же длине, что и столбцы файлов csv, причем каждый элемент имеет длину этого столбца, а последний - конец строки (что удобно, потому что «.join не делает это само по себе), затем застегните его своей строкой.Предположим, что вам нужна вкладка для первого столбца, затем два пробела между каждым из других столбцов. Тогда ваш код будет выглядеть следующим образом:
spacing = ['\t', ' ', ' ', ' ', '\r\n']
# ... the same code from before ...
line = ''.join([j for i in zip(row, spacing) for j in i])
# ... rest of the code ...
Список постижение петля немного запутанная, но думать об этом так:
for i in zip(row, spacing): # the zip here equals ==> [(item1, '\t'), (item2, ' ') ...]
for j in i: # now i == (item1, '\t')
j # so j is just the items of each tuple
С списком пониманием, это выходы: [item1, ' \ t ', item2,' ', ...]. Вы присоединяетесь к этому вместе, и все.
Как в табуляцией файл? Проверьте этот вопрос так ... http://stackoverflow.com/questions/10220412/convert-tab-delimited-txt-file-into-a-csv-file-using-python –