Hel*_*nar 2 python string integer type-conversion
我编写了这段代码,将字符串格式为"0(532)222 22 22"转换为整数,如05322222222.
class Phone():
    def __init__(self,input):
        self.phone = input
    def __str__(self):
        return self.phone
    #convert to integer.
    def to_int(self):
        return int((self.phone).replace(" ","").replace("(","").replace(")",""))
test = Phone("0(532) 222 22 22")
print test.to_int()
使用3种替换方法来解决这个问题感觉非常笨拙.我很好奇是否有更好的解决方案?
p = "0(532) 222 22 22"
print ''.join([x for x in p if x.isdigit()])
请注意,如果要将其转换为int(就像标题中所建议的那样),您将"丢失"前导零.如果你想这样做,只需将上面的内容包装在一个int()电话中即可.虽然(在我看来)电话号码确实更有意义.
在Python 2.6或2.7中,
(self.phone).translate(None,' ()')
将删除任何空格(或)从电话字符串中删除.有关详细信息,请参阅str.translate上的Python 2.6 doc.
在Python 3.x中,str.translate()采用映射(而不是如上所示的两个字符串).因此,相应的片段类似于以下内容,使用str.maketrans()来生成映射.
'(self.phone).translate(str.maketrans('','', '()-/ '))
有关详细信息,请参阅str.translate上的Python 3.1 doc.
| 归档时间: | 
 | 
| 查看次数: | 4323 次 | 
| 最近记录: |