Вы не даете нам язык, но если ваш аромат регулярного выражения поддерживает , посмотрите за утверждение , это то, что вам нужно:
.*(?
(? является отрицательное утверждение lookbehind, которое гарантирует, что до конца строки (или строки с модификатором
m
) нет символа «a».
См. здесь здесь в Regexr
Вы также можете легко распространить это на другие символы, так как это проверка на строку и не является символьным классом.
.*(?
Это будет соответствовать тому, что не заканчивается с «ab», см. его в Regexr
Концепция ведущих нулей - это концепция отображения, а не числовая. Вы можете поместить бесконечное число ведущих нулей на число без изменения его значения. Поскольку это не числовая концепция, она не сохраняется с номером.
Вы должны решить, сколько нулей вам нужно, когда вы конвертируете число в строку. Вы можете сохранить это число отдельно, если хотите.
Хотя приведенные выше комментарии верны относительно 1, 01 и 001, все они совпадают с INT, это может быть очень полезно при временном моделировании или последовательном создании фильма для поддержания ведущих нулей. Я делаю это часто, чтобы обеспечить, чтобы видеоклипы были в правильном порядке. Легкий способ сделать это - использовать zfill. zfill гарантирует, что str-версия номера - это, по крайней мере, количество символов, которые вы ему рассказываете, и делает это, заполняя левую часть строки «число» нулями.
>>> x = int(1)
>>> NewStringVariable = str(x).zfill(3)
>>> print NewStringVariable
001
>>> NewStringVariable = str(x).zfill(5)
>>> print NewStringVariable
00001
Я получал строки с датами, такие как hhmmss
, которые пересекали последовательную линию от моего Arduino.
, так что предположим, что я получил s = "122041"
; это 12:20:41
, однако 9am
будет 090000
.
Оператор print "%d" % (s)
вызывает ошибку времени выполнения, потому что 9 не является восьмеричным числом и, следовательно, является незаконным символом.
Чтобы устранить эту проблему:
print "%06d" % (int(s))
Надеюсь, что помогает