我看了很多类似的帖子,但似乎没有一个适用于我的问题。对不起,如果我错过了它。
我正在抓取一个非常大的HTML表格,并对其进行格式化以便将其输入到数据库中。一条记录有一个空白列,当我尝试
时会导致NoneType错误print "|".join(record)
因为记录看起来像
(data, ... , None, data)
我尝试在创建记录元组之前应用以下内容来过滤掉None:
def null_converter(field):
return field.string if field else "NULL"
但这似乎不起作用。有没有更好的方法来处理这个?
答案 0 :(得分:1)
尝试:
print "|".join((str(field) for field in record))
如果这不起作用,是否可能record
本身是无(而不是列表/元组)?
答案 1 :(得分:1)
删除无值:
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
是最快的。