python检查值是否以
我们不能检查值是否以字符串开头吗 我有一份口述,其中包括:python检查值是否以,python,Python,我们不能检查值是否以字符串开头吗 我有一份口述,其中包括: my_dict = {'category': 'failure', 'logged_product': 'log_prd1', 'product': 'prd1', 'backlog_month_done': None,'TDC': <__main__.TDC object at 0x010F47D0>} for attr, value in my_dict.items() : if value.startswit
my_dict = {'category': 'failure', 'logged_product': 'log_prd1', 'product': 'prd1', 'backlog_month_done': None,'TDC': <__main__.TDC object at 0x010F47D0>}
for attr, value in my_dict.items() :
if value.startswith('<__main') :
#removeit
,因此看起来像是attr
是一个字符串,但value
不是
从编辑中,您的一个值似乎是None
。要解决此问题,您应该在您的my_dict
中更改此选项:
'backlog_month_done': None
为此:
'backlog_month_done': ''
您还可以检查value
是否为字符串类型:
for attr, value in my_dict.items() :
if not isinstance(value, basestring):
continue
if value.startswith('<__main') :
#removeit
对于属性,my_dict.items()中的值:
如果不是isinstance(值、基串):
持续
如果value.startswith(“出现问题是因为my_dict['backlog\u month\u done']
是None
如果出现以下情况,您可以使用中的附加条件修复此问题:
my_dict = {'category': 'failure', 'logged_product': 'log_prd1', 'product': 'prd1', 'backlog_month_done': None,'TDC': <__main__.TDC object at 0x010F47D0>}
for attr, value in my_dict.items() :
if value and value.startswith('<__main'):
#removeit
您可以通过检查值
是否为str
来检查并防止:
for attr, value in my_dict.items() :
if isinstance(value, str) and value.startswith('<__main'):
#removeit
或者,如果您确定要删除以“开始”开头的任何内容(即使是repr of)
如果value.startswith(“my_dict
的内容是什么?value
需要是一个字符串或其他具有startswith
方法的对象。请检查您的值的类型。可能,如果这正是您正在运行的,因为假设更改空格的人没有更改problem@user1734229什么是真正的error你得到了吗?类似于“AttributeError:'int'对象没有属性'startswtih'”?有没有一种方法可以动态执行此操作?我应该循环检查my_dict
,并测试value==None
?如果你想跳过None
值(或者通常是非字符串类型)是的,你可以检查。我将在一个例子中编辑。问题是 TDC < /Cord>只是一个例子,我的DICT包含了很多值,从 @ USE174229开始,在这种情况下,你需要把它们变成字符串。上面会编辑。@ USE1717229编辑,但是你真的想考虑这是不是正确的方式来做你正在尝试的。在实际代码中使用repr
通常被认为是一种“代码气味”。看看还有哪些规则定义了要删除的值。
AttributeError: 'TDC' object has no attribute 'startswith'
for attr, value in my_dict.items() :
if isinstance(value, str) and value.startswith('<__main'):
#removeit
for attr, value in my_dict.items() :
if isinstance(value, TDC):
#removeit
for attr, value in my_dict.items() :
if repr(value).startswith('<__main'):
#removeit
for attr, value in my_dict.items() :
if not isinstance(value, basestring) :
continue # if you really want to remove it, use del my_dict[attr] here instead