回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我是python新手,我正在尝试做一个python类来转换和清理电话号码,dataframe列</p>
<p>当我调用我的类并且该类从数据帧行接收到一个none值时,就会出现这个错误</p>
<p>我的班级</p>
<pre><code>class Tel(object):
'''Classe que invalida telefones não válidos'''
def __init__(self, phone):
self.phone = phone
self.phone_tratado = self.phone = re.sub('[^0-9]', '', self.phone)
self.ddd_valido = [11, 12, 13, 14, 15, 16, 17, 18, 19,
21, 22, 24, 27, 28,
31, 32, 33, 34, 35, 37, 38,
41, 42, 43, 44, 45, 46, 47, 48, 49,
51, 53, 54, 55,
61, 62, 63, 64, 65, 66, 67, 68, 69,
71, 73, 74, 75, 77, 79,
81, 82, 83, 84, 85, 86, 87, 88, 89,
91, 92, 93, 94, 95, 96, 97, 98, 99]
def valida_telefone(self):
if int(self.phone_tratado[:2]) in self.ddd_valido:
# ddd valido
if self.phone_tratado is None: # nulo
return None
if len(self.phone_tratado) == 10:
if self.phone_tratado[2] in ['0', '1']: #fixoinvalido
return None
if self.phone_tratado[2] in ['2', '3', '4', '5']:#fixo valido
return self.phone_tratado
else:# celular, ajustar
return self.phone_tratado[:2] + '9' + self.phone_tratado[2:]
elif len(self.phone_tratado) == 11: #celular
if self.phone_tratado[2] == '9' and self.phone_tratado[3] in ['6', '7', '8', '9']:# celular valido
return self.phone_tratado
else:
return None
else:# qtde invalida
return None
else:# ddd invalido
return None
My example Dataframe: NR_T
## +-------+------+
## |INDEX |NR_TEL|
## +-------+------+
## |10 | 1 |
## |1 | 2 |
## |7 | None |
## +-------+------+
</code></pre>
<p>我的电话:</p>
<pre><code>Tel(df_2.loc[10,'NR_TEL']).valida_telefone()
</code></pre>
<p>工作正常</p>
<pre><code>Tel(df_2.loc[7,'NR_TEL']).valida_telefone()
</code></pre>
<p>错误:应为Atring或bytes-like对象</p>
<p>我怎样才能做到我的课太没有价值观?我的意思是,没有价值观可以改变</p>
<p>谢谢大家</p>