#python #python-3.x #python-2.7
#python #python-3.x #python-2.7
Вопрос:
Мне нужно преобразовать файл .csv в файл .txt, что я и сделал, и у меня есть следующий код.
text_list = []
csv_file = 'test.csv'
with open(csv_file,"r") as infile:
for line in infile:
line = line.split(",", 2)
text_list.append("t".join(line))
txt_file = 'test.txt'
with open(txt_file, 'w') as outfile:
for line in text_list:
outfile.write(" " line)
outfile.close
Но проблема в том,,
CSV-файл:
phi,Z,T
0,0,0
10.000005,1.2,3000.00
20.000005,2.4,6000.00
Требуется текстовый файл:
phi Z T
0 0 0
10.000005 1.2 3000.00
20.000005 2.4 6000.00
Текстовый файл, который у меня есть с вышеупомянутым кодом:
phi Z T
0 0 0
10.000005 1.2 3000.00
20.000005 2.4 6000.00
Спасибо
Ответ №1:
Вы можете использовать метод string ljust
для добавления пробелов в вашу строку, чтобы она имела определенную длину. Таким образом, вы читаете входной файл построчно, разделяете каждую строку на запятые и добавляете это к text_list
, что приводит к списку списков с каждым словом каждой строки.
Затем мы вычисляем количество столбцов num_cols
из длины первой строки. Затем мы вычисляем длину самого длинного слова / числа в каждом столбце с пониманием вложенного списка. Мы используем это для ljust
каждого слова в соответствии с максимальной длиной соответствующего столбца.
text_list = []
csv_file = 'test.csv'
with open(csv_file,"r") as infile:
for line in infile:
line = line.rstrip().split(",", 2)
text_list.append(line)
num_cols = len(text_list[0])
max_lengths = [max([len(line[i]) for line in text_list]) for i in range(num_cols)]
txt_file = 'test.txt'
with open(txt_file, 'w') as outfile:
for line in text_list:
outfile.write('t'.join([word.ljust(max_lengths[i]) for i, word in enumerate(line)]) 'n')
Комментарии:
1. Я понимаю вашу идею здесь. Но
AttributeError: '_io.TextIOWrapper' object has no attribute 'split'
в строке написано:for line in infile.split('n')
@sunnytown2. Мой плохой, я отредактировал код, теперь он должен работать. Дай мне знать.