Я думаю, что вы можете просто написать новую строку сразу после выхода из внутреннего цикла, и ваш код будет работать (даже если последний элемент будет иметь пробелы после него).
for item in sub_list: #Since attempt to write whole giv error
x.write(str(item) + ' ')
x.write('\n')
Однако встроенный модуль csv
обрабатывает список строк, целых чисел и т. Д. Автоматически (также обрабатывает строки с пробелами в них, заключая их в кавычки):
data=[(24, 'Sale', 0, 15), (16, 'Buy', 18, 0)]
with open('txt_file.txt', 'w', newline="") as x:
csv.writer(x,delimiter=" ").writerows(data)
метод writerows
может написать коллекцию кортежей или списков. Именно то, что вам нужно. Единственное отличие состоит в том, что csv
не может разделять данные более чем одним символом (разделители с несколькими символами не допускаются). Вам придется обходиться 1 пробелом.