Форум сайта python.su
0
Уровень моих знаний самый начальный, помогите пожалуйста. В голову не приходит ничего кроме как реализации на Pyton.
Есть текстовый файл (Input.txt) с набором цифр в одну строку, нужно перенести число на новую строку, через пробел в этой же строке продублировать следующее число и так до конца файла. Количество цифр может рандомно меняться. В итоге вывести полученный результат в текстовый файл (Output.txt)
Имеем такой набор Input.txt 0, 198, 246, 198, 243, 197, 248, 196, 245…
Нужно получить вот такой набор цифр Output.txt
0 198
198 246
246 198
198 243
243 197
197 248
248 196
196 245
245 …
Прикреплённый файлы:
Input.txt (18,2 KБ)
Офлайн
44
with open("input.txt") as f: txt = f.read() seq = txt.split(", ") out = [] for i in range(len(seq)): block = [] block.append(seq[i]) try: block.append(seq[i + 1]) except IndexError: block.append("") out.append(block) print(out)
и вставьте ссылку на его url Офлайн
857
Транслирует файл
#!/usr/bin/env python3 # Для текстового файла (input.txt) с набором цифр в одну строку # переносит число на новую строку и через пробел в этой же строке # дублирует следующее число, проходя так до конца файла. Количество # цифр может меняться рандомно. В итоге выводит полученный результат в # текстовый файл (output.txt) # Пример: # Имеем такой набор в input.txt # 0, 198, 246, 198, 243, 197, 248, 196, 245 ... # Получается такой набор в output.txt # 0 198 # 198 246 # 246 198 # 198 243 # 243 197 # 197 248 # 248 196 # 196 245 # 245 ... def translate(istream, ostream): state = 0 number1 = number2 = '' while True: ch = istream.read(1) if state == 0: if ch.isdigit(): number1 += ch else: state = 1 elif state == 1: if ch == ',': pass elif ch == ' ': state = 2 else: state = 4 elif state == 2: if ch.isdigit(): number2 += ch elif ch == ',': state = 3 else: state = 4 elif state == 3: if ch == ',': pass elif ch == ' ': print(number1, number2, file=ostream) number1 = number2 number2 = '' state = 2 elif state == 4: if number2: print(number1, number2, file=ostream) elif number1: print(number1, file=ostream) break def process(ifname, ofname): with open(ifname, 'r', encoding='utf-8') as fin, \ open(ofname, 'w', encoding='utf-8') as fout: translate(fin, fout) def main(): ifname = 'input.txt' ofname = 'output.txt' process(ifname, ofname) if __name__ == '__main__': main()
[guest@localhost linenumseq]$ ll -h
итого 18M
-rw-rw-r--. 1 guest guest 18M фев 9 16:59 input.txt
-rwxr--r--. 1 guest guest 2,1K фев 9 16:55 linenumseq.py
[guest@localhost linenumseq]$ ./linenumseq.py
[guest@localhost linenumseq]$ ll -h
итого 46M
-rw-rw-r--. 1 guest guest 18M фев 9 16:59 input.txt
-rwxr--r--. 1 guest guest 2,1K фев 9 16:55 linenumseq.py
-rw-rw-r--. 1 guest guest 28M фев 9 17:00 output.txt
[guest@localhost linenumseq]$
Отредактировано py.user.next (Фев. 9, 2021 08:07:08)
Прикреплённый файлы:
linenumseq.tar.gz (15,1 KБ)
Офлайн
0
py.user.nextСпасибо Вам большое!
Транслирует файл
Офлайн
0
AD0DE412Спасибо за помощь!
Офлайн