"Python: 添加已解析的字符串但丢弃不符合条件的值?"

2024-04-19 18:14:59 发布

您现在位置:Python中文网/ 问答频道 /正文

警告:我是个十足的新手;如果在提交此问题之前没有搜索到正确的内容,我深表歉意。我发现了很多关于如何忽略错误的知识,但并不像我在这里要做的那样。你知道吗

我有一个简单的脚本,用于从数据库中获取数据,解析一些字段,然后将解析后的值重新写入数据库。多个用户根据分隔模板提交到数据库,但存在一定程度的不符合性,这意味着有时字符串不会包含所有/任何分隔符。我的脚本需要能够完全抛出这些实例来处理它们。你知道吗

我很难抛出不兼容的字符串,而不是忽略它们引发的错误。当我尝试try-except-pass时,当我的脚本试图将解析的值附加到我最终要写回db的数组中时,我最终得到了错误。你知道吗

最初,我的剧本说:

def parse_comments(comments):
    parts = comments.split("||")
    if len(parts) < 20:
        raise ValueError("Comment didn't have enough || delimiters")
return Result._make([parts[i].strip() for i in xrange(2, 21, 3)])

完全兼容的上传会将结果追加到数组中并写回数据库。你知道吗

我试过了,除了:

def parse_comments(comments):
    parts = comments.split("||")
    try:
        Thing._make([parts[i].strip() for i in xrange(2, 21, 3)])
    except:
        pass
    return Thing

但当我尝试将解析后的值附加到数组中时,我最终得到了一个错误——具体来说是TypeError:'type'对象没有属性'getitem'

我也试过:

def parse_comments(comments):
    parts = comments.split("||")
    if len(parts) >= 20:
        Thing._make([parts[i].strip() for i in xrange(2, 21, 3)])
    else:
        pass
    return Thing

但无济于事。你知道吗

DR:太长了,读不下去了,我需要分析一下东西,追加解析的项目。如果一个字符串不能按我所希望的方式解析,我希望我的代码完全忽略该字符串并继续。你知道吗


Tags: 字符串脚本数据库makereturnparsedef错误
2条回答

But I end up getting an error when I try and append the parsed values to an array specifically TypeError: 'type' object has no attribute 'getitem'

因为Thing意味着事物类本身,而不是该类的实例。你知道吗

当数据无效时,您需要更清楚地考虑要返回什么。在这种情况下,您可能无法在这里返回任何直接可用的内容,因此调用代码必须显式检查。你知道吗

我不知道你想做什么我都明白。但我认为你没有在正确的地方发现错误。您自己说过,当您想将值附加到数组时,会出现这种情况。所以也许你应该:

try:
   # append the parsed values to an array 
except TypeError:
   pass  

您应该在except之后提供要捕获的异常类型,否则它将捕获any exception,甚至用户的CTRL+C也会引发KeyboardInterrupt。你知道吗

相关问题 更多 >