我看到了很多类似的帖子,但似乎都不适用于我的问题。抱歉,如果我错过了。
我正在抓取一个相当大的 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/