Я подозреваю, что OP хочет, чтобы все эти 0 печатались, независимо от того, сколько их там. Нет array(
ни )
и не многоточие ...
Guess:
Попробуйте ','.join([str(_) for _ in data[i][5:]])
В полном объеме:
row = [{'Field1': data[i][:3], 'Field2': data[i][3:5], 'LongField': ','.join([str(_) for _ in data[i][5:]])}]
Related to this answer.
Помощь:
Какой тип вы используете? Можете ли вы показать нам больше кода? Или скажите вывод: type(data[0])
EDIT
О.П. уточнил, какой массив и как долго:
Это numpy.array
(или один размер ndarray
, так же ул лечение)
И это 2,984 долго.
Видимо версия ул из numpy.array
обрежет все, кроме первых 3 и последние 3 элементов, когда массив содержит 1000 элементов или более
999 элементов:
str(numpy.array(range(1000)))
>>[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
>> 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
>> 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
>> 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
>> 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
>> 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
etc...
1000 элементов:
str(numpy.array(range(1001)))
>>'[ 0 1 2 ..., 998 999 1000]'
Итак, я думаю, что моя оригинальная рекомендация должна работать, заставляя ее представлять строковое представление. Я думаю, CSV DictWriter
должен позаботиться о цитировании.
','.join([str(_) for _ in numpy.array(range(2987))])
EDIT
Объясняя свой ответ:
Таким образом, вы не даете DictWriter строку - она должна вывести строку. Я предполагаю, что DictWriter будет использовать функцию Python str
. Как указано в документации, функция str
будет:
Возвращает строку, содержащую красиво отображаемое представление объекта.
Я полагаю numpy
разработчики думали, что array
с> 999 элементов будет не быть очень «версия для печати»
Так выше 1000 они, вероятно, функция __str__
возвращает «обобщенную» версию, которая показывает только первые 3 элемента и последние 3 элемента.
Вместо того, чтобы позволить DictWriter или str
дать вам строку, вы можете создать именно нужную строку. Я считаю, что строка, которую вы хотите, просто все элементы массива, разделенных запятой, это то, что делает этот код:
','.join([str(_) for _ in [1,2,3]])
','.join()
будет «сцепить» все элементы на запятую; элементы должны быть строками
[str(_) for _ in [1,2,3]]
преобразует отдельные элементы строки (необходимые для объединения работы)
, потому что вы не имеете конечный индекс может быть, он принимает остальные из массива и выводит его, как массив. Попробуйте поместить 'len (data [i])' следующим образом: '[5: len (data [i])]' – deltashade
Что такое образец 'data'? Что вам нужно для данных в столбце «LongField»? Как вы ожидаете, чтобы множество значений отображалось в одном столбце csv? – martineau
@ deltashade Я пробовал это, но те же результаты .. – user32147