Удалить ведущие нули из числа, заданного в виде строки, с помощью Python
В этой статье мы изучим программу Python для удаления ведущих нулей из числа, заданного в виде строки.
Предположим, мы взяли число в строковом формате. Теперь мы удалим все ведущие нули (нули, присутствующие в начале числа), используя приведенные ниже методы.
Используемые методы
Ниже приведены различные методы, используемые для выполнения этой задачи:
-
Использование цикла For и функции удаления()
Способ 1: использование цикла For и функции удаления()
Алгоритм (шаги)
Ниже приведены алгоритмы/шаги, которые необходимо выполнить для выполнения желаемой задачи. −
- Создайте функцию deleteLeadingZeros(), которая удаляет ведущие нули из числа, передаваемого в функцию в виде строки.
- Используйте цикл for для перемещения по всей длине строки с помощью функции len().
- Функция len() — количество элементов в объекте возвращается методом len(). Функция len() возвращает количество символов в строке, если объект является строкой.
- Используйте условный оператор if вместе с оператором !=, чтобы проверить, не равен ли текущий символ в строке 0.
- Получите оставшиеся символы строки после ведущих нулей, используя нарезку.
- Верните результирующую строку после удаления всех начальных 0 из входной строки.
- Возвращает 0, если ведущие 0 не найдены.
- Создайте переменную для хранения входного числа, переданного в виде строки.
- Вызовите определенную выше функцию deleteLeadingZeros(), передав ей входную строку, чтобы получить результирующую строку после удаления ведущих нулей.
- Таким же образом проверьте, нет ли в другой строке ведущих нулей.
Пример
Следующая программа возвращает результат в виде строки, которая удаляет все ведущие нули из числа, переданного в виде строки, с использованием функций цикла и удаления() —
# creating a function that removes the leading zeros # from a number passed as a string to the function def deleteLeadingZeros(inputString): # traversing through the length of the string for k in range(len(inputString)): # checking whether the current character of a string is not 0 if inputString[k] != '0': # getting the remaining string using slicing outputString= inputString[k::] # returning resultant string after removing leading 0s return outputString # returning 0 if there are no leading 0s found in the entire string return "0" # input number as a string inputString = "0002056" print("Given String is:", inputString) # calling the deleteLeadingZeros() function by passing the input string to it print("After Removing Leading Zeros:", deleteLeadingZeros(inputString)) # checking it for other strings having no leading 0s inputString = "256" print("Given String is:", inputString) # calling the deleteLeadingZeros() function by passing the input string to it print("After Removing Leading Zeros:", deleteLeadingZeros(inputString))
Выход
При выполнении вышеуказанная программа сгенерирует следующий вывод:
Given String is: 0002056 After Removing Leading Zeros: 2056 Given String is: 256 After Removing Leading Zeros: 256
Способ 2: использование регулярного выражения
Алгоритм (шаги)
Ниже приведены алгоритмы/шаги, которые необходимо выполнить для выполнения желаемой задачи. −
- Используйте ключевое слово import, чтобы импортировать модуль regex(re).
- Создайте функцию deleteLeadingZeros(), которая удаляет ведущие нули из числа, передаваемого в функцию в виде строки.
- Создайте переменную для хранения шаблона регулярного выражения для удаления ведущих нулей из входной строки.
- Замените соответствующий шаблон регулярного выражения пустой строкой с помощью функции sub().
Пример
Следующая программа возвращает результат в виде строки, которая удаляет все ведущие нули из числа, переданного в виде строки, с использованием регулярных выражений:
# importing re module import re # creating a function that removes the leading zeros # from a number passed as a string to the function def deleteLeadingZeros(inputString): # regex pattern for removing leading zeros from an input string regexPattern = "^0+(?!$)" # Replace the matched regex pattern with an empty string outputString = re.sub(regexPattern, "", inputString) # returning output string after removing leading 0s return outputString # input number as a string inputString = "0002056" print("Given String is:", inputString) # calling the deleteLeadingZeros() function by passing the input string to it print("After Removing Leading Zeros:", deleteLeadingZeros(inputString))
Выход
При выполнении вышеуказанная программа сгенерирует следующий вывод:
Given String is: 0002056 After Removing Leading Zeros: 2056
Способ 3: использование функции int()
Алгоритм (шаги)
Ниже приведены алгоритмы/шаги, которые необходимо выполнить для выполнения желаемой задачи. −
- Создайте функцию deleteLeadingZeros(), которая удаляет ведущие нули из числа, передаваемого в функцию в виде строки.
- Используйте функцию int() (возвращает целое число из заданного объекта), чтобы преобразовать входную строку в целое число. Эта функция удаляет все ведущие нули.
- Верните результирующее число после удаления всех начальных 0 из входной строки.
Пример
Следующая программа возвращает число, которое удаляет все ведущие нули из числа, переданного в виде строки с помощью функции int():
# creating a function that removes the leading zeros # from a number passed as a string to the function def deleteLeadingZeros(inputString): # converting the input string to an integer removes all the leading zeros result = int(inputString) # returning the resultant number after removing leading zeros return result # input number as a string inputString = "0002056" print("Given String is:", inputString) # calling the deleteLeadingZeros() function by passing the input string to it print("After Removing Leading Zeros:", deleteLeadingZeros(inputString))
Выход
При выполнении вышеуказанная программа сгенерирует следующий вывод:
Given String is: 0002056 After Removing Leading Zeros: 2056
Заключение
В этой статье мы узнали, как удалить ведущие нули из числа, заданного в виде строки, тремя разными методами. Мы научились использовать срезы для получения подмножества итерируемого объекта, например строки, списка или кортежа. Мы также узнали, как использовать модуль регулярных выражений для замены (замены) одного шаблона другим.
Все права защищены. © Linux-Console.net • 2019-2023
Как убрать ведущие нули в питоне
Спасибо, совет правильный. Еще такой вопрос всвязи с этим, есть форма списка документов, надо, чтобы номер документа там также без нулей был, как это проще сделать?
(15) посмотри модуль печати документа, там и префикс убирается, и нули
можно попробовать при вводе строки устновить вывод текста и там подменять номер.
стр = стрзаменить(ВходСтр,»0″,Символы.ПС);
для к = 1 по СтрЧислоСтрок(стр) Цикл
если СтрДлина(стрполучитьстроку(стр,к))>0 тогда
прервать;
КОнецЕсли;
КонецЦикла;
(6)
> ПроверяемыйСимвол = Сред(ИскомаяСтрока, НомерСимвола,1);
> Если КодСимвола(ПроверяемыйСимвол) <> 48 Тогда
достаточно
Если КодСимвола(ПроверяемыйСимвол,ПроверяемыйСимвол) <> 48 Тогда
+если уж на скорость, то ПозицияНеНуля можно выкинуть. в 1С переменная цикла при выходе из цикла определена (НомерСимвола).
при выходе = после выхода
стр = СокрЛ(СтрЗаменить(ИскомаяСтрока, «0», » «));
Поз = СтрДлина(ИскомаяСтрока) — СтрДлина(стр) + 1;
Если Поз > 1 Тогда
СтрокаБезВедущихнулей = Сред(ИскомаяСтрока,Поз);
Иначе
СтрокаБезВедущихнулей = ИскомаяСтрока;
КонецЕсли;
о где Serg69? Он такое любит под попкорн.
Вот еще вариант (если посередине строки пробелов нет):
СтрокаБезНулей = СтрЗаменить(ИскомаяСтрока, «0», » «);
СтрокаБезНулей = СокрЛ(СтрокаБезНулей);
Результат = СтрЗаменить(СтрокаБезНулей, » «, «0»);
(23) если были пробелы, не прокатит.
СтрокаБезНулей = СтрЗаменить(СтрЗаменить(ИскомаяСтрока,» «, «_»), «0», » «);
СтрокаБезНулей = СокрЛ(СтрокаБезНулей);
Результат = Прав(ИсходнаяСтрока, СтрДлина(СтрБезНулей));
(22) А? что? где? где попкорн?
//Убрать ведущие нули из строки
Запрос = Новый Запрос();
Запрос.Текст = «ВЫБРАТЬ ВЫБОР КОГДА Т1.Стр ПОДОБНО «»0%»» ТОГДА ПОДСТРОКА(Т1.Стр, 2, 1000) ИНАЧЕ Т1.Стр КОНЕЦ КАК БезНулей
|ИЗ (ВЫБРАТЬ ВЫБОР КОГДА Т2.Стр ПОДОБНО «»00%»» ТОГДА ПОДСТРОКА(Т2.Стр, 3, 1000) ИНАЧЕ Т2.Стр КОНЕЦ КАК Стр
|ИЗ (ВЫБРАТЬ ВЫБОР КОГДА Т3.Стр ПОДОБНО «»0000%»» ТОГДА ПОДСТРОКА(Т3.Стр, 5, 1000) ИНАЧЕ Т3.Стр КОНЕЦ КАК Стр
|ИЗ (ВЫБРАТЬ ВЫБОР КОГДА Т4.Стр ПОДОБНО «»00000000%»» ТОГДА ПОДСТРОКА(Т4.Стр, 9, 1000) ИНАЧЕ Т4.Стр КОНЕЦ КАК Стр
|ИЗ (ВЫБРАТЬ ВЫБОР КОГДА Т5.Стр ПОДОБНО «»0000000000000000%»» ТОГДА ПОДСТРОКА(Т5.Стр, 17, 1000) ИНАЧЕ Т5.Стр КОНЕЦ КАК Стр
|ИЗ (ВЫБРАТЬ ВЫБОР КОГДА &ЕстьНули ПОДОБНО «»00000000000000000000000000000000%»» ТОГДА ПОДСТРОКА(&ЕстьНули, 33, 1000) ИНАЧЕ &ЕстьНули КОНЕЦ КАК Стр) КАК Т5) КАК Т4) КАК Т3) КАК Т2) КАК Т1″;
// Проверим?
Фигня = «0000000000000000000000000000000000000000000000000000000000000000123»;
Запрос.УстановитьПараметр(«ЕстьНули», Фигня);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Сообщить(«Было : » + Фигня + «, стало : » + Выборка.БезНулей);
Возврат;
Не выводятся ведущие нули
Почему при выводе списка строк в номерах, которые начинаются с нуля, не выводятся сами нули?
import re def sanitize_phone_number(phone): phone_numbers = [re.sub('\D', '', digi) for digi in [phone_number for phone_number in phone]] phone_numbers = [int(phone_number) for phone_number in phone_numbers] print(phone_numbers) return phone_numbers phones = [" +38(050)123-32-34", " 0503451234", "(050)8889900", "38050-111-22-22", "38050 111 22 11 "] sanitize_phone_number(phones)
Проблема вроде в 7-ой строке. Подскажите, как её исправить?
Отслеживать
25.4k 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
Как убрать все нули из начала строки?
Подскажите, пожалуйста, регулярное выражение, чтобы убрать все нули из начала строки.
Количество нулей может быть разным(0012345, 0000012345, 000000000000000012345).
- Вопрос задан более двух лет назад
- 1291 просмотр
Комментировать
Решения вопроса 2
ltrim($str, ‘0’)
Ответ написан более двух лет назад
Нравится 9 1 комментарий
Кстати, ltrim тоже не универсально.
Я так думаю, что «000000», «0000.567» и «000asd» нужно в «0», «0.567» и «asd» превратить.
Короче, в общем случае нужно проверять содержимое строки.

0xD34F @0xD34F Куратор тега Регулярные выражения
Не надо никаких регулярных выражений:
Хотя, разумеется, есть такой вариант:
Ответ написан более двух лет назад
Нравится 5 7 комментариев

а зачем strval?

0xD34F @0xD34F Куратор тега Регулярные выражения
FanatPHP, чтобы на выходе было значение того же типа, что и на входе.
intval не катит. вдруг в строке float или что-то типа «000000sdfghj».

0xD34F @0xD34F Куратор тега Регулярные выражения
zombtron, всё-таки катит — перечитал вопрос, не увидел в примерах обрабатываемых строк ни флоат, ни «что-то типа».
0xD34F, Но в примере нет и указания, что будут строго целые с нулями в начале.
А люди частенько сводят общую задачу к желаемой. ) Да и вообще, в програмизме нужно все варианты учитывать, руководствуясь «аксиомой недосказанности».
0xD34F, Но пусть будет целое. Что intval сделает со строкой «00018446744073709551616»? )))

0xD34F @0xD34F Куратор тега Регулярные выражения
zombtron, да-да, а ещё нет указания, что будет строго строка.
Не нужно ничего учитывать. Достаточно считать, что автор вопрос умственно полноценен, понимает, что спрашивает. Ну а какой вопрос — такой ответ.