У меня есть список списков, как показано ниже. а = [[1,2,3], [2,3,4], [3,4,5]]
У меня также есть отдельный список имен names = ['Ann', 'john', 'smith']
Теперь я хочу записать это в CSV-файл, как показано ниже
1st row: Ann,1,2,3
2nd row: john,2,3,4
3rd row: smith,3,4,5
Я в настоящее время использую;
with open(output_file, 'w') as f:
writer = csv.writer(f)
writer.writerows(a)
Тем не менее, он не выполняет работу, которую я хочу, так как он всегда начинается с первого столбца, а не второго столбца. Пожалуйста, помогите мне.
3 ответа
with open(output_file, 'w') as f:
f.write('\n'.join([elem[0]+','+str(elem[1]).strip('[').strip(']') for elem in zip(names,a)]))
Попробуй это.
Здесь важно понять, что вы хотите обрабатывать список параллельно . Это легко сделать с помощью встроенной функции zip
. Он принимает список итерируемых элементов и возвращает n -й элемент каждого итерируемого в виде кортежа. Затем вы можете отформатировать строки, используя str.format
:
names = ['Ann', 'john', 'smith']
sublists = [[1,2,3], [2,3,4], [3,4,5]]
with open(output_file, 'w') as file:
for name, sublist in zip(names, sublists):
row = '{},{},{},{}'.format(name, *sublist)
file.write(row)
Обратите внимание, что если ваши списки имеют разные размеры, вы можете захотеть использовать itertools.zip_longest
.
with open("output_file", 'w') as f:
f.write("\n".join([','.join(map(str, [name] + extra)) for name, extra in zip(name, extras)])
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.