2015-01-03 2 views
2

Я получаю строку из формата формы 07123456789 (это номер телефона), и я хотел бы удалить первый номер/символ, только если это ноль. А после этого добавьте 44 спереди. Таким образом, выход будет 447123456789.Python удаляет первый номер из строки, если это 0

Каков наилучший способ сделать это?

+0

Вы действительно должны добавить '+ 44' на фронт. В противном случае вы не сможете отличить номера телефонов, которые начали не иметь «0», но «44» в начале. (Я полагаю, что добавление '44' должно происходить только в том случае, если было' 0', в противном случае нет.) – glglgl

+0

Я использую API для отправки текстовых сообщений. Принятый формат номера - 447123456789. – Bobys

+0

Ok. Но что происходит (или: что должно произойти), если число не начиналось с '0' на первом месте? Предполагается ли он содержать префикс уже или это ошибка? – glglgl

ответ

5

Использование str.startswith

In [11]: s = '07123456789' 

In [12]: '44{}'.format(s[1:] if s.startswith('0') else s) 
Out[12]: '447123456789' 

Кроме того, вместо format тин, вы можете присоединиться строки вместе с + оператора:

'44' + (s[1:] if s.startswith('0') else s) 

Если вы уверены, что это не более 1 ноль в начале от числа, вы можете безопасно использовать str.lstrip или int конверсии (см. другие ответы).

1

Один из способов идти об этом, чтобы бросить в int удалить нуль в начале, а затем бросили обратно в str:

s = '07123456789' 
s = '44'+str(int(s)) 
+0

Плюс 1. Более общий подход, чем использование 'startswith', возможно. –

+0

Это приведет к удалению всех ведущих нулей, в то время как он попросит первый. – ThinkChaos

1

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

>>> s = "07123456789" 
>>> "44%s"%(int(s)) 
'447123456789' 

Мы можем использовать метод lstrip для строки, которая удалит все «0» слева от строки. например

>>> "44%s"%(s.lstrip("0")) 
'447123456789' 

Если мы хотим рассматривать только первый символ из строки, то можно попробовать следующее: (выше два решения не будет, когда более одного «0» при запуске строки.)

>>> if s[0]=="0": 
... s = s[1:] 
... 
>>> "44%s"%s 
'447123456789' 

Или пойти с раствором из jamylak

>>> s = '07123456789' 
>>> "44%s%s"%(s[0].strip("0"), s[1:]) 
'447123456789' 
+0

Мне нравится 'lstrip' в этом случае. кажется точным инструментом для работы – jamylak

+0

@jamylak не тогда, когда номер телефона имеет более одного '0' в начале ... Я удалил lstrip из моего ответа по этой самой причине. – vaultah

+0

Я подумал об этом, тогда я подумал, что номера телефонов, вероятно, не более 1 '0', но это naiive – jamylak

2

Еще один возможный вариант:

>>> s = '07123456789' 
>>> '44' + s[0].strip('0') + s[1:] 
'447123456789' 
0

str.lstrip лучше всего подходит для этого случая:

>>> s = '07123456789' 
>>> '44'+s.lstrip('0') 
'447123456789' 
>>> s = '7123456789' 
>>> '44'+s.lstrip('0') 
'447123456789' 
Смежные вопросы