как обработать файл что бы в строке стало по 10 строк
есть файл на 1000 строк нужно обработать файл так что бы в новом файле стало в одной строке 10 строк в итоге 100 строк (добавив разделитель в виде запятой ',') как это сделать на python и второй вариант как так сделать в блокноте?
i=0
for line in file:
str=''.join(''line'')
if i % 10 == 0:
print (str)
str=''
i++
Ответы (2 шт):
Реализация на python
# Открываем исходный файл для чтения
with open('input.txt', 'r') as input_file:
# Читаем все строки в список
lines = input_file.readlines()
# Создаем новый пустой список для хранения объединенных строк
combined_lines = []
# Объединяем каждые 10 строк в одну строку через запятую
for i in range(0, len(lines), 10):
combined_line = ', '.join([line.strip() for line in lines[i:i+10]])
combined_lines.append(combined_line)
# Записываем результат в новый файл
with open('output.txt', 'w') as output_file:
output_file.write('\n'.join(combined_lines))
Если имеется ввиду ms блокнот, то ручками
chunks
любую последовательность нарезает на порции заданного размера. Последняя порция может оказаться короче.
def chunks(seq, k):
"""Split seq into chunks of size k."""
chunk = []
for item in seq:
chunk.append(item)
if len(chunk) >= k:
yield chunk
chunk = []
if chunk:
yield chunk
trim_trailing_newline
отрезает от строки перевод строки в конце, если он есть. Это нужно потому что конструкция for line in f:
перебирает строки с переводами в конце, их надо удалять. Последняя строка файла может быть и без перевода строки и даже пустая.
def trim_trailing_newline(line):
"""Remove last new line character if any."""
return line[:-1] if line[-1:] == '\n' else line
join_lines
читает файл по строкам, удаляет из строк переводы строк, собирает строки в пачки из k
штук разделённые разделителем sep
.
def join_lines(f, k, sep):
"""Joins chunks of k sequential lines from file f."""
for c in chunks(map(trim_trailing_newline, f), k):
yield sep.join(c)
main
читает входной поток, объединяет строки, печатает результат в выходной поток.
def main():
for line in join_lines(sys.stdin, 10, ','):
print(line)
Использование:
python join.py < input.txt > output.txt