Как удалить ведущие и конечные нули в строке? Питон
Желаемый результат для удаления задний нули будут:
Желаемый результат для ведущий конечные нули будут:
Выход желания для удаления как начальных, так и конечных нулей будет:
На данный момент я делаю это следующим образом, пожалуйста, предложите лучший способ, если есть:
7 ответы
Что насчет базового
удалить конечные и ведущие нули? Если вас интересует только удаление конечных нулей, используйте .rstrip вместо этого (и .lstrip только для ведущих).
Больше информации в Док.
Вы можете использовать некоторое понимание списка, чтобы получить последовательности, которые вы хотите, например:
Есть ли какая-то умная корректировка этого ответа для особого случая s = ‘0’ ? — Чарльз
@Чарльз: Да! У меня была такая же проблема, и вы можете сделать s.strip(«0») or «0» : если ваша строка превратится в пустую строку, она будет оцениваться как False или и будет заменено на нужную строку «0» — Tarulen
@Pierre GM Спасибо. Это действительно помогает, и это очень просто. Проголосовал за это — Вишав Гупта
Удалить начальный + конечный «0»:
Удалить ведущий «0»:
Удалить завершающий «0»:
ответ дан 30 окт ’12, 15:10
Вы можете просто сделать это с помощью bool:
ответ дан 05 мар ’16, в 13:03
Не работает с alphanumeric0000 как просил ОП. — Калле Рихтер
ответ дан 30 окт ’12, 15:10
Предполагая, что в вашем списке есть другие типы данных (а не только строки), попробуйте это. Это удаляет завершающие и ведущие нули из строк и оставляет другие типы данных нетронутыми. Это также обрабатывает особый случай s = ‘0’
ответ дан 24 окт ’19, 21:10
pandas также предлагаем удобный способ:
Первый даст, например:
Это может быть более удобно при работе с DataFrames
ответ дан 14 окт ’21, 17:10

str.strip это лучший подход для этой ситуации, но more_itertools.strip также является общим решением, которое удаляет как ведущие, так и конечные элементы из итерации:
Код:
Подробнее
Обратите внимание, здесь мы удаляем как начальные, так и конечные строки. «0» s среди других элементов, удовлетворяющих предикату. Этот инструмент не ограничивается строками.
См. также документы для получения дополнительных примеров
-
: зачистите оба конца : зачистить левый конец : зачистите правый конец
more_itertools это сторонняя библиотека, которую можно установить через > pip install more_itertools .
Мини-язык форматирования
Инструкции (спецификации) мини-языка могут передаваться напрямую встроенной функции format().
Большинство встроенных типов использует инструкции, описанные ниже. Некоторые типы форматирования поддерживаются только числовыми типами.
Общий вид инструкции: [[заполнение]равнение][знак][‘#’][‘0’][минразмер][‘,’][‘.’точность][тип] .
1.Заполнение
Заполнение можно указать, если указано равнение. В качестве заполнения может выступать любой символ. Если символ не указан, то будет использован ‘ ‘ (пробел).
2. Равнение
Равнение может быть указано следующими способами:
| < | Равнение влево. Используется по умолчанию для большинства объектов. |
| ▶ | Равнение вправо. Используется по умолчанию для чисел. |
| = | Для чисел. Добавляет отступ после знака (если есть), но перед числом. Пример: +000000120 . Становится вариантом по умолчанию, если 0 предшествует длине. |
| ^ | Центровка. |
3. Знак
Знак используется только для числовых типов:
| + | Использовать знак и для положительных и для отрицательных. |
| — | Использовать знак только для отрицательных. Используется по умолчанию. |
| пробел | Добавить пробел перед положительным и минус перед отрицательным. |
4. Альтернативное представление
# — использовать альтернативную форму представления. Разные типы предлагают разные альтернативные формы. Опция доступна для целых, чисел с плавающей запятой, комплексных и десятичных.
- Для целых, когда используются двоичная восьмеричная и шестнадцатеричная формы, опция добавляет префиксы 0b , 0o и 0x соответственно.
- Для чисел с плавающей запятой, комплексных и десятичных альтернативная форма подразумевает наличие точки (разделителя), даже если за ней не следуют цифры. В обычной форме разделитель ставится, только если за ним следует цифра. Кроме того, для преобразований типа g и G (см. ниже) нули в конце числа не отсекаются.
5. Тысячный разделитель
+py2.7 +py3.1 , — использовать запятую в качестве тысячного разделителя. Чтобы использовать разделитель, заданный локалью, используйте тип преобразования целых n (см. ниже). Смотрите также PEP 378.
6. Ведущие нули
0 — Если не задано равнение, то нуль перед минразмер включает добавление перед числом нулей, зависящее от его знака.
7. Минимальный размер
Минразмер — это целое, задающее минимальный размер (длину) значения. Если не указыается, то будет использована длина самого значения.
8. Точность
- Для чисел с плавающей запятой — это количество цифр, которые требуется вывести после десятичного разделителя (для форматирования f и F ), либо до и после разделителя (для форматирования g и G ).
- Для целых точность не обрабатывается.
- Для прочих типов — это количество знаков, которые требуется взять из значения.
9. Тип
Тип — это тип представления, который требуется использовать.
Типы для строк
| s | Строка. Этот тип используется по умолчнию, его можно не указывать. |
| None | То же, что и s . |
Типы для целых
| b | Двоичный вид. Число по основанию 2. |
| c | Символ. Представляет целое в виде соответствующего Unicode-символа. |
| d | Десятичная форма. Число по основанию 10. |
| o | Восьмеричная форма. Число по основанию 8. |
| x , X | Шестнадцатеричная форма. Число по основанию 16. Буквы в нижнем и в верхнем регистре соответственно. |
| n | Число. То же, что и d , только символы-разделители будут зависеть от настроек используемой локали. |
| None | То же, что и d . |
Типы для чисел с плавающей запятой и для десятичных
| e , E | С плавающей запятой (нижний и верхний регистр соответственно). Экспоненциальный формат. ※ |
| f , F | С фиксированной запятой (нижний и верхний регистр для nan и inf соответственно). ※ |
| g , G | Общий вид (нижний и верхний регистр соответственно). Для заданной точности p >= 1 , округляет число до p значащих цифр и представляет результат, используя либо число с фиксированной запятой, либо научный формат, в зависимости от величины этого числа. Точность 0 трактуется эквивалентно точности 1 . ※ ※※ |
| n | Число. То же, что и g , только символы-разделители будут зависеть от настроек используемой локали. |
| % | Процент. Умножает число на 100 и использует f для вывода. В конце ставится % . |
| None | Похоже на g , за исключением случая, когда используется вид с фиксированной запятой, при этом за разделителем следует по меньшей мере одна цифра. Точность по умолчанию в этом случае устанавливается достаточной для представления заданного значения. Общий эффект соответствует применению str(), с применением прочих модификаций формата. |
※ Точность по умолчанию: 6.
※※ Правила приведения. Пусть результат отформатирован при помощи e и точность p-1 использует экспоненту exp . Если -4 <= exp < p , то число будет отформатировано при помощи f с точностью p-1-exp . Иначе число будет отформатировано при помощи e с точностью p-1 . В обоих случаях незначащие нули справа обрубаются. Кроме того, удаляется разделитель, если за ним не следуют цифры. При этом вне зависимости от точности плюс бесконечность, минус бесконечность, плюс нуль, минус нуль и nan будут представлены соответственно: inf , -inf , 0 , -0 , nan .
python, устраняющий ведущие нули в функции
У меня есть функция foo(): они берут байты, объединяют их и возвращают значение int. однако, когда я передаю foo (’99 ‘,’ 00 ‘), ведущее 0 байта будет обрезано. в результате получается строка «990» вместо «9900».
Мне было интересно, был ли изящный способ сказать python, что я хочу, чтобы параметры обрабатывались как строка вместо int. Я могу сделать обходной путь (показано ниже), чтобы убедиться, что для каждого параметра есть две цифры. Просто интересно, есть ли другой способ сделать это
Edit: foo (99,00), а не foo (’99 ‘,’ 00 ‘) — это то, что дает мне проблемы, с которыми я имею дело