2014-11-10 4 views
0

Я пытался извлечь все элементы кортежей my data points (x, y) и поместить их в список значений x и y list и перенести их в два столбца в Excel-таблице. Кажется, писать цифры в файл довольно сложно. Может ли кто-нибудь пролить свет на эту проблему? Текущее состояние:Запись чисел в файл python

xlist=[list[i][0] for i in range(len(list))] 
ylist=[list[i][1] for i in range(len(list))] 
fob=open('c:/test/a.txt','w') 
fob.write(xlist[i] for i in range(len(xlist)) 

я хочу записать столбец чисел в блокноте, так что я могу выделить и скопировать в электронную таблицу непосредственно. Ниже приведены мои данные.

list = [(0.496, 12.49), (0.531, 12.40), (0.578, 12.18), (0.615, 
    11.96), (0.657, 11.75), (0.731, 11.28), (0.785, 10.85), (0.812, 
    10.61), (0.883, 9.92), (0.930, 9.40), (0.979, 8.77), (1.026, 
    8.10), (1.081, 7.23), (1.134, 6.33), (1.189, 5.39), (1.220, 
    4.85), (1.273, 3.92), (1.332, 2.91), (1.364, 2.55), (1.418, 
    2.16), (1.467, 1.65), (1.523, 1.17), (1.569, 0.82), (1.626, 
    0.47), (1.678, 0.21), (1.723, 0.01), (1.776, 0.19), (1.814, 
    0.28), (1.869, 0.36), (1.933, 0.36), (1.972, 0.31), (2.021, 
    0.18), (2.081, 0.13), (2.129, 0.46), (2.169, 0.79), (2.219, 
    1.24), (2.280, 1.84), (2.306, 2.11), (2.358, 2.67), (2.414, 
    3.37), (2.471, 4.05), (2.505, 4.51), (2.562, 5.22), (2.613, 
    5.84), (2.652, 6.31), (2.712, 7.01), (2.758, 7.52), (2.802, 
    7.99), (2.869, 8.63), (2.930, 9.16), (2.971, 9.57), (3.043, 
    10.35), (3.078, 10.69), (3.119, 11.00), (3.174, 11.26), (3.217, 
    11.40), (3.261, 11.53), (3.307, 11.55), (3.371, 11.51), (3.432, 
    11.40), (3.479, 11.26), (3.507, 11.20), (3.557, 11.00), (3.623, 
    10.55), (3.663, 10.28), (3.729, 9.79), (3.768, 9.57), (3.825, 
    9.24), (3.880, 8.85), (3.944, 8.41), (3.969, 8.04), (4.014, 
    7.55), (4.086, 6.67), (4.105, 6.37), (4.166, 5.50), (4.212, 
    4.88), (4.266, 4.20), (4.311, 3.69), (4.364, 3.06), (4.401, 
    2.65), (4.453, 2.09), (4.497, 1.68), (4.556, 1.18), (4.602, 
    0.85), (4.644, 0.57), (4.695, 0.29), (4.754, 0.04), (4.799, 
    0.11), (4.847, 0.17), (4.918, 0.11), (4.959, 0.04), (4.992, 
    0.19), (5.063, 0.64), (5.098, 0.90), (5.157, 1.40), (5.201, 
    1.79), (5.245, 2.20), (5.291, 2.65), (5.326, 3.00), (5.387, 
    3.65), (5.420, 4.02), (5.469, 4.62), (5.538, 5.44), (5.579, 
    5.96), (5.629, 6.57), (5.674, 7.14), (5.724, 7.73), (5.798, 
    8.60), (5.823, 8.88), (5.888, 9.62), (5.919, 9.94), (5.963, 
    10.41), (6.009, 10.85), (6.050, 11.22), (6.115, 11.71), (6.153, 
    11.99), (6.222, 12.39), (6.263, 12.61), (6.302, 12.77), (6.377, 
    12.99), (6.414, 13.03), (6.454, 13.02), (6.522, 12.89), (6.558, 
    12.74), (6.626, 12.41), (6.677, 12.05), (6.729, 11.64), (6.791, 
    11.00), (6.832, 10.58), (6.887, 9.92), (6.949, 9.13), (6.996, 
    8.48), (7.028, 8.09), (7.094, 7.13), (7.123, 6.70), (7.161, 
    6.16), (7.213, 5.35), (7.250, 4.81), (7.332, 3.61), (7.382, 
    2.93), (7.420, 2.45), (7.474, 1.88), (7.514, 1.40), (7.576, 
    0.71), (7.600, 0.50), (7.662, 0.12), (7.725, 0.16), (7.768, 
    0.26), (7.810, 0.30), (7.858, 0.26), (7.904, 0.18), (7.980, 
    0.10), (8.021, 0.29), (8.078, 0.65), (8.133, 1.06), (8.165, 
    1.33), (8.218, 1.83), (8.267, 2.31), (8.321, 2.87), (8.355, 
    3.27), (8.413, 3.91), (8.473, 4.61), (8.519, 5.22), (8.553, 
    5.65), (8.643, 6.74), (8.678, 7.23), (8.734, 7.94), (8.760, 
    8.27), (8.803, 8.81), (8.851, 9.35), (8.905, 9.94), (8.961, 
    10.45), (9.009, 10.92), (9.053, 11.34), (9.106, 11.75), (9.166, 
    12.14), (9.228, 12.48), (9.292, 12.71), (9.340, 12.86), (9.384, 
    13.01), (9.412, 13.05), (9.452, 13.03), (9.472, 13.00)] 

Приветствия

+1

Вы можете использовать библиотеку [xlwt] (http://www.python-excel.org/), чтобы записать его в файл первенствовать или [встроенная библиотека] (https://docs.python.org/2/library/csv.html), чтобы записать ее в текстовый файл [csv file] (http://en.wikipedia.org/wiki/ Comma-separated_values) непосредственно с python вместо того, чтобы обходным путем выводить это в текстовый файл, а затем копировать – yuvi

+0

@yuvi no ... эта библиотека предназначена для Excel 2003, мне нужны лучшие вещи для решения этой проблемы –

+1

@ user28968: check модуль [xlsxwriter] (https://xlsxwriter.readthedocs.org/en/latest/). –

ответ

0

Если у вас есть данные, такие как числа или объекты в памяти, это вообще не правильно сбросить эти данные непосредственно в диск, вы хотите сериализовать.

Самый простой способ сериализации - это печать, которая автоматически вызывает метод «сериализации» __str__. Проблема с этим методом сериализации заключается в том, что не всегда легко десериализовать.

Когда у вас есть структура данных, как и описываемая вами матрица, вам понадобится метод сериализации, который сохранит структуру и позволит восстановить ее в памяти. В этом случае вы можете использовать CSV (через модуль csv), JSON (через модуль json) или многие другие.

Использование CSV.

2

Экспортируйте его в файл CSV. Ваш прецедент очень прост, и вы можете это сделать, используя стандартный Python.

with open('output.csv', 'w') as f: 
    for x, y in l: 
    f.write("%s, %s\n" % (x, y)) 

Примечание: список является зарезервированным словом в python, и вы не должны его использовать.

1

Использование openpyxl писать .xslx файлы из Python:

import openpyxl 

my_list = [(0.496, 12.49), (0.531, 12.40), (0.578, 12.18), (0.615, 
    11.96), (0.657, 11.75), (0.731, 11.28), (0.785, 10.85), (0.812, 
    10.61), (0.883, 9.92), (0.930, 9.40), (0.979, 8.77), (1.026, 
    8.10), (1.081, 7.23), (1.134, 6.33), (1.189, 5.39), (1.220, 
    4.85), (1.273, 3.92), (1.332, 2.91), (1.364, 2.55), (1.418, 
    2.16), (1.467, 1.65), (1.523, 1.17), (1.569, 0.82), (1.626, 
    0.47), (1.678, 0.21), (1.723, 0.01), (1.776, 0.19), (1.814, 
    0.28), (1.869, 0.36), (1.933, 0.36), (1.972, 0.31), (2.021, 
    0.18), (2.081, 0.13), (2.129, 0.46), (2.169, 0.79), (2.219, 
    1.24), (2.280, 1.84), (2.306, 2.11), (2.358, 2.67), (2.414, 
    3.37), (2.471, 4.05), (2.505, 4.51), (2.562, 5.22), (2.613, 
    5.84), (2.652, 6.31), (2.712, 7.01), (2.758, 7.52), (2.802, 
    7.99), (2.869, 8.63), (2.930, 9.16), (2.971, 9.57), (3.043, 
    10.35), (3.078, 10.69), (3.119, 11.00), (3.174, 11.26), (3.217, 
    11.40), (3.261, 11.53), (3.307, 11.55), (3.371, 11.51), (3.432, 
    11.40), (3.479, 11.26), (3.507, 11.20), (3.557, 11.00), (3.623, 
    10.55), (3.663, 10.28), (3.729, 9.79), (3.768, 9.57), (3.825, 
    9.24), (3.880, 8.85), (3.944, 8.41), (3.969, 8.04), (4.014, 
    7.55), (4.086, 6.67), (4.105, 6.37), (4.166, 5.50), (4.212, 
    4.88), (4.266, 4.20), (4.311, 3.69), (4.364, 3.06), (4.401, 
    2.65), (4.453, 2.09), (4.497, 1.68), (4.556, 1.18), (4.602, 
    0.85), (4.644, 0.57), (4.695, 0.29), (4.754, 0.04), (4.799, 
    0.11), (4.847, 0.17), (4.918, 0.11), (4.959, 0.04), (4.992, 
    0.19), (5.063, 0.64), (5.098, 0.90), (5.157, 1.40), (5.201, 
    1.79), (5.245, 2.20), (5.291, 2.65), (5.326, 3.00), (5.387, 
    3.65), (5.420, 4.02), (5.469, 4.62), (5.538, 5.44), (5.579, 
    5.96), (5.629, 6.57), (5.674, 7.14), (5.724, 7.73), (5.798, 
    8.60), (5.823, 8.88), (5.888, 9.62), (5.919, 9.94), (5.963, 
    10.41), (6.009, 10.85), (6.050, 11.22), (6.115, 11.71), (6.153, 
    11.99), (6.222, 12.39), (6.263, 12.61), (6.302, 12.77), (6.377, 
    12.99), (6.414, 13.03), (6.454, 13.02), (6.522, 12.89), (6.558, 
    12.74), (6.626, 12.41), (6.677, 12.05), (6.729, 11.64), (6.791, 
    11.00), (6.832, 10.58), (6.887, 9.92), (6.949, 9.13), (6.996, 
    8.48), (7.028, 8.09), (7.094, 7.13), (7.123, 6.70), (7.161, 
    6.16), (7.213, 5.35), (7.250, 4.81), (7.332, 3.61), (7.382, 
    2.93), (7.420, 2.45), (7.474, 1.88), (7.514, 1.40), (7.576, 
    0.71), (7.600, 0.50), (7.662, 0.12), (7.725, 0.16), (7.768, 
    0.26), (7.810, 0.30), (7.858, 0.26), (7.904, 0.18), (7.980, 
    0.10), (8.021, 0.29), (8.078, 0.65), (8.133, 1.06), (8.165, 
    1.33), (8.218, 1.83), (8.267, 2.31), (8.321, 2.87), (8.355, 
    3.27), (8.413, 3.91), (8.473, 4.61), (8.519, 5.22), (8.553, 
    5.65), (8.643, 6.74), (8.678, 7.23), (8.734, 7.94), (8.760, 
    8.27), (8.803, 8.81), (8.851, 9.35), (8.905, 9.94), (8.961, 
    10.45), (9.009, 10.92), (9.053, 11.34), (9.106, 11.75), (9.166, 
    12.14), (9.228, 12.48), (9.292, 12.71), (9.340, 12.86), (9.384, 
    13.01), (9.412, 13.05), (9.452, 13.03), (9.472, 13.00)] 

book = openpyxl.Workbook() 
sheet = book.active 

for i, value in enumerate(my_list): 
    sheet.cell(row=i+1, column=1).value = value[0] 
    sheet.cell(row=i+1, column=2).value = value[1]  

book.save('test.xlsx') 
Смежные вопросы