Python 如果第一个数字为 0,则从字符串中删除该数字

Python remove first number from string if it's 0

我从表单格式 07123456789 中获取一个字符串(它是一个 phone 数字),我想删除第一个 number/character 只有当它是零时。然后在前面添加 44 。所以输出将是 447123456789.

哪种方法最好?

使用str.startswith

In [11]: s = '07123456789'

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

此外,您可以使用 + 运算符将字符串连接在一起,而不是 formatting:

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

如果您确定数字开头最多有 1 个零,则可以安全地使用 str.lstripint 转换(参见其他答案)。

解决此问题的一种方法是转换为 int 以删除开头的零,然后转换回 str:

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

我们可以将字符串转换成整数,例如

>>> 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'

还有一个可能的选择:

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

str.lstrip 最适合这种情况:

>>> s = '07123456789'
>>> '44'+s.lstrip('0')
'447123456789'
>>> s = '7123456789'
>>> '44'+s.lstrip('0')
'447123456789'