首页 > 解决方案 > 我可以用什么代替 strip() 来删除 \n、\t 和空格?

问题描述

我正在使用strip()来避免刮刀中的空格、\n 和 \t。它适用于硒,但有时使用scrapy我得到' AttributeError ':' 'Nonetype'对象没有属性'strip'

标签: pythonseleniumweb-scrapingscrapystrip

解决方案


你得到None而不是,sting你尝试使用None.strip()不存在的 - 所以使用任何其他功能对你没有帮助。

你必须使用if/else来检查得到什么:

if result is not None: 
    result = result.strip() 

或更短

if result: 
    result = result.strip() 

编辑:

你也可以写在一行

result = result.strip() if result else result

但它似乎不太可读

最终你可以使用try/except

try:
    result = result.strip()
except AttributeError as ex:
    print('ex:', ex)

但它似乎更不可读


当然你可以把这段代码放在某个函数中

def my_strip(value):
    if result: 
        return result.strip()
    return value

然后使用

result = my_strip(result)
    

推荐阅读