Не выводятся ведущие нули
Почему при выводе списка строк в номерах, которые начинаются с нуля, не выводятся сами нули?
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.7k 4 4 золотых знака 21 21 серебряный знак 36 36 бронзовых знаков
Удалить ведущие нули из числа, заданного в виде строки, с помощью 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-2024
Как убрать ведущие нули в питоне
Спасибо, совет правильный. Еще такой вопрос всвязи с этим, есть форма списка документов, надо, чтобы номер документа там также без нулей был, как это проще сделать?
(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»;
Запрос.УстановитьПараметр(«ЕстьНули», Фигня);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Сообщить(«Было : » + Фигня + «, стало : » + Выборка.БезНулей);
Возврат;
Удаление ведущего нуля перед числом в Python
У меня есть строка, которая соответствует числу, но с несколькими ведущими нулями перед ним. Что я хочу сделать, это удалить нули, которые находятся перед числом, но не в числе. Например, «00000001» должен быть равен 1, а «00000010» должен быть be 10. Я написал код, который удаляет нули, но также и последнее:
segment = my_str.strip("0")
Этот код удаляет все нули. Как я могу удалить только ведущие нули перед числом.
Поделиться Источник 06 декабря 2018 в 14:55
2 ответа
>>> '00000010'.lstrip('0') '10'
( strip удаляет как ведущие, так и конечные нули.)
Это нарушает ‘0’ (превращая его в пустую строку). Есть несколько способов исправить это:
>>> re.sub(r'0+(.+)', r'\1', '000010') '10' >>> re.sub(r'0+(.+)', r'\1', '0') '0'
>>> str(int('0000010')) '10'
>>> s = '000010' >>> s[:-1].lstrip('0') + s[-1]
Поделиться 06 декабря 2018 в 14:56
просто используйте функцию int() , она изменит строку на целое число и удалит нули
my_str = '00000010' my_int = int(my_str) print(my_int)