我看到了许多类似的帖子,但是似乎没有一个适合我的问题。对不起,如果我错过了。
我正在抓取一个很大的HTML表,并对它进行格式化,以便可以将其输入数据库。一条记录有一个空白列,当我尝试时会导致NoneType错误
print "|".join(record)
因为记录看起来像
(data, ... , None, data)
我试图通过在创建记录元组之前应用以下内容来过滤掉None:
def null_converter(field):
return field.string if field else "NULL"
但这似乎不起作用。有没有更好的方法来解决这个问题?
最佳答案
删除None值:
record = ("data", None, "data")
[x for x in record if x is not None]
['data', 'data']
如果确定没有虚假值:
print filter(None,record)
('data', 'data')
要么:
"|".join(map(str,records))
In [6]: "|".join(map(str,d))
Out[6]: 'data|None|data'
一些时间:
In [9]: d = ("data", None, "data") * 100
In [10]: %timeit [x if x is not None else "Null" for x in d ]
10000 loops, best of 3: 22.8 µs per loop
In [11]: %timeit "|".join(map(str,d))
10000 loops, best of 3: 38.9 µs per loop
In [12]: %timeit "|".join((str(field) for field in d))
10000 loops, best of 3: 66.3 µs per loop
map
比循环和强制转换更有效,但list comp
是最快的。关于python - BeautifulSoup/Python发生NoneType错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25090223/