Python:附加一个解析过的字符串,但抛出不兼容的值?

Python:附加一个解析过的字符串,但抛出不兼容的值?,python,parsing,exception-handling,Python,Parsing,Exception Handling,警告:我完全是个新手;如果我在提交此问题之前没有搜索正确的内容,请道歉。我发现了很多关于如何忽略错误的知识,但与我在这里尝试做的完全不同 我有一个简单的脚本,用于从数据库中获取数据,解析一些字段,然后将解析后的值重新写入数据库。多个用户根据分隔模板提交到数据库,但存在一定程度的不符合性,这意味着有时字符串不会包含所有/任何分隔符。我的脚本需要能够通过完全抛出这些实例来处理它们 我很难抛出不兼容的字符串,而不仅仅是忽略它们引起的错误。当我尝试尝试除pass之外的其他方法时,当脚本试图将解析后的值附

警告:我完全是个新手;如果我在提交此问题之前没有搜索正确的内容,请道歉。我发现了很多关于如何忽略错误的知识,但与我在这里尝试做的完全不同

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

我很难抛出不兼容的字符串,而不仅仅是忽略它们引起的错误。当我尝试尝试除pass之外的其他方法时,当脚本试图将解析后的值附加到数组中时,我最终会将其写回数据库,结果会出错

最初,我的剧本说:

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)])
但当我尝试将解析后的值附加到数组中时,我最终得到了一个错误——特别是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
但是没有用


tl;dr:我需要解析内容并附加解析的项目。如果一个字符串不能按我所希望的方式解析,我希望我的代码完全忽略该字符串并继续

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

try:
   # append the parsed values to an array 
except TypeError:
   pass  
您应该在exception之后指定要捕获的异常类型,否则它将捕获,即使用户的CTRL+C会引发异常

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

因为Thing是指Thing类本身,而不是该类的实例


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

首先,如果您想调用列表中的部件[20],lenparts应该>=21。其次,您确定注释是您认为的吗?可能是因为您的评论实际上是符合要求的,所以没有提出错误。谢谢@Karl,我最终回到了绘图板,并最终得到了一些稍微不同的结果。
try:
   # append the parsed values to an array 
except TypeError:
   pass