python число в строку с ведущими нулями

Как сохранить ведущие нули в целых числах Python для форматирования строк

У меня есть то, что я считаю простым вопросом. У меня есть следующий код и вывод не то, что я ожидаю:

Моя проблема в том, что r печатается как «31508.78», а я хочу «031508.78». Как мне сохранить ведущий ноль?

4 ответа

0 перед числом не имеет значения для python, потому что числа не имеют ведущих нулей. Ты можешь использовать:

Для Python нет разницы в следующих вещах:

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

Или, если вы на самом деле не хотите число, вы также можете просто указать число в виде строки для начала, которая, конечно, сохраняет ведущий ноль.

Я не думаю, что есть какой-либо способ сохранить число с нулем в Python. Это оставляет вам два пути:

1) Сделать строку r, т. Е. R = «031408.78»

Я думаю, что это лучший метод для вас, так как вы можете выполнить всю арифметику, которую вы хотите сделать (используя неявное приведение типов python), и видеть число, к которому добавляется 0, где бы вы его не использовали.

2) Если вы просто хотите напечатать число с ведущими нулями, подумайте об этом

Я предпочитаю новый формат строки мини-язык. Я нахожу это более интуитивным.

Источник

Добавить ведущие нули на основе условия в Python

У меня есть датафрейм с 5 миллионами строк. Допустим, датафрейм выглядел так, как показано ниже:

Обратите внимание, что столбец Random хранится в виде строки.

Если число в столбце Random содержит менее 9 цифр, я хочу добавить начальные нули, чтобы сделать его 9 цифрами. Если число имеет 9 или более цифр, я хочу добавить начальные нули, чтобы сделать его 20 цифрами.

Я сделал следующее:

Поскольку количество строк превышает 5 миллионов, этот процесс занимает много времени! (производительность была 5it / sec. Протестировано с использованием tqdm, предполагаемое время завершения было в днях!).

Есть ли более простой и быстрый способ выполнения этой задачи?

5 ответов

Сравнение скорости по миллиону строк строк со значениями произвольной длины (от 5 символов до 30):

(Строка target = df.copy() необходима, чтобы убедиться, что каждый повторный тестовый прогон изолирован от предыдущего.)

Вывод: на 1 млн строк использование np.where() примерно на 10% медленнее.

Это примерно в 3 раза быстрее!

Я использовал ‘apply’ в сочетании с функцией fill_zeros, написанной ниже, чтобы получить время выполнения 603 мс на кадре данных из 1 000 000 строк.

Так как вы спрашиваете об эффективности, строковые операции являются одной из распространенных «ошибок» в Pandas, поскольку, хотя они векторизованы (то есть вы можете применить их ко всей серии за один раз), это делает not означает, что они более эффективны, чем зацикливание, и это один из примеров, когда зацикливание на самом деле будет быстрее, чем использование метода доступа к строкам, что, как правило, больше для удобства, чем для скорости.

Если вы сомневаетесь, убедитесь, что ваше время работает с вашими фактическими данными, так как то, что вы думаете, может быть неуклюжим и медленным, может быть быстрее, чем то, что выглядит чистым!

Я собираюсь предложить очень простую функцию зацикливания, которая, я думаю, превзойдет любой подход, использующий строковый метод доступа.

Источник

Записки океанолога — обработка и визуализация данных

Вставляем нули перед цифрами, Python

Published by magik on 26 апреля, 2008 10:24 пп under MATLAB, nix, Python, Обработка данных, Без рубрики

Задача: написать функцию которая переводит целое число в строку определённого размера, содержащую это целое число и нули.

�?нструменты: Python, модули os, sys

UPD: Пост, конечно, смешной, потому как всё что я здесь расписываю в Питоне решается на раз без написания всяких функций. Смотри коменты. Продолжать читать имеет смысл только если хочется узнать зачем же нам решать такую задачу 🙂 Ещё можно добавить в коменты свой вариант решения, не только на питоне 🙂

Сразу скажу что я абсолютно уверен что эта задача решается в питоне какой ни будь встроенной функцией, и буду благодарен, если кто ни будь мне на неё укажет. Мне же, к сожалению, ничего раскопать не удалось. Ещё больше я уверен в том что это делает и какой-нибудь awk в одну строчку, но мне нужна была питоновская функция.

Для чего это нужно? Сделано это было для чтения модельных файлов, у которых имена определяются именно таким образом, но потом оказалось полезным и для создания gif файлов из ps при помощи convert (чтоб сортировало по порядку). Хотя ещё позже обнаружилось что gif файлы прекрасно создаются и без этого :))). Оба примера я приведу. Также приведу оригинальную функцию для MATLAB, которая делает то же самое.

Объяснений много не будет, потому что объяснять там особо нечего )

Usage:
myint2str(x, n)

Function padds integer x with zeros to n locations

rres = zzeros+ str ( x )
return rres

Чтоб лишний раз не травмировать моск комрада lorien вставил докстринг (да будут преданы анафеме те кто этого не делает, на самом деле) и постарался оформить код поприличней, при этом уверен что опять где нить напортачил и от канона PEP 8 отступил 🙂

Функция принимает в качестве аргументов целое число, которое мы будем конвертить и количество позиций в создаваемой нами строке. Всё просто до безобразия.

In [1]: from myint2str import *
In [2]: myint2str(333, 10)
Out[2]: ‘0000000333’

Как это дело использовать.

Если какая то программа создаёт выходные файлы, дописывая к каждому из них номер по порядку, то это вызывает известные трудности с алфавитно-числовой сортировкой. Например, решив перевести многостраничный ps файл в png

вы получите примерно такую неприятную картину:

HEFF_0-70560-0.png
HEFF_0-70560-1.png
HEFF_0-70560-10.png
HEFF_0-70560-100.png
HEFF_0-70560-101.png
HEFF_0-70560-102.png
HEFF_0-70560-103.png
HEFF_0-70560-104.png
HEFF_0-70560-105.png
HEFF_0-70560-106.png
HEFF_0-70560-107.png
HEFF_0-70560-108.png
HEFF_0-70560-109.png
HEFF_0-70560-11.png

Просмотрщик рисунков, например, в человеческом порядке смотреть это откажется, потому что по его правилам сортировки после 1 идёт 10, а потом 100. Тот же convert, если вам захочется создать gif анимацию, после 109-го рисунка впихнёт 11-й и ничего вы с ним не сделаете (кто знает как сделать, скажите как! 🙂 ).

Чтобы обойти это безобразие был написан следующий скрипт:

На входе задаётся имя файла и количество страниц в вашем .ps файле.

Конвертируем .ps, при помощи convert, при этом вырезая только то что нам надо:

input_file[:-3] — это имя входного файла без расширения .ps

Далее мы запускаем цикл в котором поочерёдно все созданные нами .png файлы переименовываем из вида input_file[:-3]-111.png в вид input_file[:-3]-00111.png. Теперь они у нас расположатся в приятном глазу порядке:

HEFF_0-70560-00000.png
HEFF_0-70560-00001.png
HEFF_0-70560-00002.png
HEFF_0-70560-00003.png
HEFF_0-70560-00004.png
HEFF_0-70560-00005.png
HEFF_0-70560-00006.png
HEFF_0-70560-00007.png
HEFF_0-70560-00008.png
HEFF_0-70560-00009.png
HEFF_0-70560-00010.png
HEFF_0-70560-00011.png

то в анимации всё будет по порядку (ну и задержка между фреймами из за delay будет 30 миллисекунд).

Продвинутые создатели gif анимаций, конечно, такими извратами не пользуются и просто пишут:

Но, если вы решите остановиться на уровне .png, то данный скрипт может пригодиться 🙂

В заключении матлабовская версия функции, написанная Dimitris Menemenlis из JPL для матлабовкого пакета обработки данных MITgcm модели: :

function s=myint2str ( x,n ) ;
%MYIN2STR(X,N) convert integer to string with leading zeros
% padds integer X with zeros to N locations

s= int2str ( x ) ;
n=n- length ( s ) ;
for i = 1 :n
s= [ ‘0’ s ] ;
end

15 комментариев

Чорт :((( опозорилсо ))
Ну пусть живёт в назидание потомкам )))

Ещё так можно:
>>> str(333).rjust(10, ‘0’)
‘0000000333’

Блин, где вы раньше были )))
Спасибо, огромное!
Предлагаю устроить конкурс — кто больше вариантов сделает, и не только на питоне )

Я попытался решить, но голяк…не понял прикола совсем..(

А еще, если строку надо повторить несколько раз, можно ее просто умножить:

for zz in range(1,n-string_len,1):
zzeros = zzeros ‘0’

Метод zfill, распознаёт минусы

2Caujka
�? то правда )

Народ, подскажите, а какой вариант лучше юзать? с форматированием аля С или функции-члены класса?

Что значит «лучше»? ) Лучше для кого? Для Санта-Клауса? Ему, мне кажется, без разницы, что вы будете использовать 🙂

Что тут не понятного? Какие-то функции,классы итд — устарелые, какие-то с граблями или не портируемыю.

«Устарелых» функций среди перечисленных я не заметил. Про портируемость я не в курсе — я только с CPython 2.4(2.5) обычно работаю. А грабли найти в любой функции и языке при желании можно, хотя в PHP их, конечно, на порядок больше 😉

По поводу портируемости — это вроде самые что ни на есть стандартные функции. будут везде и всегда )
По поводу скорости не скажу, но на мой взгляд ни в первом ни во втором случае особо ничего не тратится ))

esli variantu to togda mojno i vot etot
def nuller(vl, nuls):
return (nuls — len(str(vl)))*’0′ str(vl)

Like!! I blog quite often and I genuinely thank you for your information. The article has truly peaked my interest.

Generic Viagra Fast Delivery cialis online canada Cialis 10mg Forum cialis online ordering Amoxicillin Prescribing Information For Uti’S

Here are some links to web sites that we link to simply because we think they’re really worth visiting.

Here is a superb Blog You may Find Fascinating that we encourage you to visit.

The time to read or go to the material or websites we’ve linked to beneath.

We like to honor numerous other world-wide-web web pages around the net, even when they aren

If some one wants to be updated with most up-to-date technologies then he must be pay a visit this web site and be up to date everyday.|

Источник

Числа: целые, вещественные, комплексные

Числа в Python 3: целые, вещественные, комплексные. Работа с числами и операции над ними.

Целые числа (int)

Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:

Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).

Битовые операции

Над целыми числами также можно производить битовые операции

Дополнительные методы

Системы счисления

Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011. Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:

Вещественные числа (float)

Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:

Для высокой точности используют другие объекты (например Decimal и Fraction)).

Также вещественные числа не поддерживают длинную арифметику:

Простенькие примеры работы с числами:

Дополнительные методы

Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.

Модуль math предоставляет более сложные математические функции.

Модуль random реализует генератор случайных чисел и функции случайного выбора.

Комплексные числа (complex)

В Python встроены также и комплексные числа:

Для работы с комплексными числами используется также модуль cmath.

Источник

Заполнение строк в Python

В этой статье мы рассмотрим, какие типы отступов существуют, и примеры того, как эффективно добавить их в Python с помощью ljust (), center (), rjust (), zfill() и format().

Вступление

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

Частым случаем использования заполняющих строк является вывод табличной информации табличным способом. Вы можете сделать это различными способами, включая использование панд для преобразования ваших данных в реальную таблицу. Таким образом, Python будет обрабатывать форматирование вывода самостоятельно.

В этой статье мы рассмотрим, как заполнять строки в Python.

Скажем, у нас есть эти три списка:

Мы можем сформировать их в строку, используя функцию join() :

Это дало бы нам довольно неопрятный результат:

Чтобы бороться с этим, мы могли бы написать for /| while циклы и добавлять пробелы к строкам, пока они не достигнут определенной длины, и убедиться, что все данные выровнены правильно для легкого визуального контроля. Или мы могли бы использовать встроенные функции, которые могут достичь той же цели.

Типы прокладок

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

Левая Прокладка

Добавление левого отступа к строке означает добавление заданного символа в начале строки, чтобы сделать ее заданной длины. Левое заполнение, помимо простого форматирования и выравнивания, может быть действительно полезно при именовании файлов, которые начинаются с числа, сгенерированного в последовательности.

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

Это дает эффект выравнивания строк по левому краю.

Центральная Прокладка

Это означает, что данный символ добавляется в равной мере к обеим сторонам строки до тех пор, пока новая строка не достигнет заданной длины. Используя это эффективно центрирует строку в заданной длине:

Правая Прокладка

Правое заполнение аналогично левому заполнению – данный символ добавляется в конец строки до тех пор, пока строка не достигнет определенной длины.

Функции Python Для Заполнения Строк

просто()

Функция ljust() выравнивает строку влево, добавляя правое заполнение.

Что дает нам выход:

центр()

rjust()

Аналогично предыдущим двум функциям, just() выравнивает строку вправо, добавляя отступ слева (начало) строки.

Запуск этого кода даст нам:

zfill()

Функция zfill() работает очень похоже на использование just() с нулем в качестве указанного символа. Он оставил заполнение данной строки нулями до тех пор, пока строка не достигнет заданной длины.

Это делается для того, чтобы сохранить исходное значение числа в том случае, если строка была числом. Запуск этого кода даст нам:

формат()

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

Эти заполнители допускают различные варианты форматирования. Давайте посмотрим, как мы можем достичь различных типов заполнения строк с помощью этих параметров:

Левое заполнение: Используйте > внутри заполнителя и числа, чтобы указать желаемую ширину, чтобы выровнять строку по правому краю (добавить символы в начале):

Разбивочная прокладка: Аналогично, мы можем использовать ^ для разбивочной прокладки/выравнивания:

Правое заполнение: Используйте внутри заполнителей для выравнивания строки по левому краю:

Вывод

Добавление отступов к строкам в Python-это относительно простой процесс, который может заметно повысить читабельность ваших выходных данных, особенно если данные, которые у вас есть, могут быть прочитаны в виде таблицы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

x | yПобитовое или
x ^ yПобитовое исключающее или
x & yПобитовое и
x > yБитовый сдвиг вправо