Я знаю, что подобные вопросы задавались и раньше, однако я не могу отредактировать свой код так, чтобы он соответствовал:
У меня есть скрипт Python, который записывает все комбинации из 15 чисел в текстовый файл:
import itertools
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
combinations = list(itertools.combinations(numbers, 15))
#print(combinations)
#Write combinations to a file
with open('combinations.txt', 'w') as f:
for comb in combinations:
f.write(str (comb) + '\n')
По неизвестной причине результаты заключаются в круглые скобки:
Мне нужно записать в файл xlsb каждое число в столбце без скобок и запятых, ожидаемый результат ниже:
...с централизованным текстом и фиксированной шириной столбца Есть идеи простого и небольшого кода? У меня уже есть pandas и openpyxl (если это поможет)
это должен быть Excel (формат xlsb). Пожалуйста
вы не можете создавать файлы xlsb непосредственно в Python, однако вы можете создать файл xlsx. Кроме того, не используйте pandas, это будет неэффективно, перейдите непосредственно к openpyxl (см. мой ответ ниже).
Если были заданы похожие вопросы, зачем тогда задавать и не искать похожие вопросы?
кто-нибудь пробовал github.com/rahulgurujala/excel-helper?
Вот что я нашел в старом проекте с похожими параметрами, просто нужно импортировать правильные модули и, возможно, отредактировать параметры и т. д.
import pandas as pd
# Convert combinations to a DataFrame
df = pd.DataFrame(combinations)
# Save DataFrame to an Excel file with a specified column width and centralized text
output_file = 'combinations.xlsx'
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
df.to_excel(writer, index=False, header=False)
Это должно создать новый файл Excel, в котором каждое число занимает одну строку и столбец. Если это не сработает, я удалю ответ.
полезно, не сохранял в xlsb и не централизовал и не настраивал столбцы, но работало.
Вы не можете создать файл xlsb напрямую, однако вы можете сначала создать файл xlsx, а затем преобразовать.
Обратите внимание, что для этого вам не нужны панды, лучше используйте openpyxl
напрямую. Кроме того, не создавайте все комбинации с помощью list
, это будет излишне занимать много места в памяти, если комбинаций много, а лучше зацикливаться непосредственно на выводе combinations
:
from openpyxl import Workbook
import itertools
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
wb = Workbook()
ws = wb.active
for comb in itertools.combinations(numbers, 15):
ws.append(comb)
wb.save('combinations.xlsx')
Чтобы затем преобразовать в xlsb, следуйте этому подходу (для которого требуются Windows и Excel).
Выход:
Я не понимаю, почему я получаю сообщение об ошибке: >>> из рабочей книги импорта openpyxl >>> импортировать itertools >>> >>> числа = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] >>> >>> wb = Workbook() >>> ws = wb.active >>> >>> для расчески в itertools.combinations(numbers, 15) : ... ws.append(comb) ... wb.save('combinations.xlsx') Файл "<stdin>", строка 3 wb.save('combinations.xlsx') ^^ SyntaxError: неверный синтаксис
Извините, это был просто отступ... сработало
Вам нужен файл Excel или текстовый файл (например, CSV)?