我在网报废工作,在Python编码和我确定它几乎所有提交的数据。我创建dataframes相关分析。不过我有在一些网络页面的报废部分“无”值的问题。
在我工作的最后一步,我就废与环中的价格值<span>
部分,如下图所示。
<span class="abababa">100,00$</span>
这里是我的for循环,我使用.text
从<span>
部分逃脱:
price=[]
for i in range(4):
for j in range(100):
pr=data[i][j].find('span', class_ = 'abababa')
price.append(pr.text)
dPP=pd.DataFrame(price, columns=['Price'])
注:有4个主要的Web页,每页有至少100价值废钢价格在上面的代码中。这就是为什么我用两个嵌套的for循环。
不存在任何问题,如果有在上面的代码100点的值没有“无”的值。然而,在课程的现实世界中也有对没有任何<span>
部分价格部分的一些“无”的值。
像下面一个:
<span class="abababa">100,00$</span>
<span class="abababa">48,00$</span>
None
<span class="abababa">100,00$</span>
我试图找到与if语句,从“无”的值,但在这种情况下,下面的代码下降到“无”值指标和数据帧我越来越混乱逃跑的解决方案。例如,我有4个主要的网页和100个值,我期望有一个4×100 = 400行单个列数据帧。如果我总共有10“无”的价值观,我的数据帧将在总390行。
price=[]
for i in range(4):
for j in range(100):
pr=data[i][j].find('span', class_ = 'abababa')
if pr == (None):
continue
price.append(pr.text)
dPP=pd.DataFrame(price, columns=['Price'])
总之,我没有做它没有下探那些“无”值工作。 .text
也没有任何“无”值工作。我得到'NoneType' object has no attribute 'text'
错误。
你可以帮帮我吗?
你可以简单地添加一个虚拟值,以价格留住关键 -
price=[]
for i in range(4):
for j in range(100):
pr=data[i][j].find('span', class_ = 'abababa')
if pr == (None):
price.append('dummy-string-when-none-occurs')
continue
price.append(pr.text)
dPP=pd.DataFrame(price, columns=['Price'])
如果data
是一个数据帧一个更好的方法将使用本地大熊猫。然后, -
price = data['enter-html-col']\
.apply(lambda x: x.find('span', class_ = 'abababa') if x is not None else x)
您只需将一个空字符串,当pr
是None
?
price=[]
for i in range(4):
for j in range(100):
pr=data[i][j].find('span', class_ = 'abababa')
if pr is None:
price.append("")
continue
price.append(pr.text)
dPP=pd.DataFrame(price, columns=['Price'])
您可以尝试在代码中的以下修改:
price=[]
for i in range(4):
for j in range(100):
pr=data[i][j].find('span', class_ = 'abababa')
if pr == (None):
price.append(None)
continue
price.append(pr.text)
dPP=pd.DataFrame(price, columns=['Price'])
你可以只使用一个if语句?
for j in range(100):
if data[i][j] == None:
price.append(data[i][j])
else:
pr=data[i][j].find('span', class_ = 'abababa')
price.append(pr.text)