TypeError: ‘str‘ object does not support item assignment(语言-python)

代码遇到TypeError: ‘str‘ object does not support item assignment怎么解决啊各位大佬!救救孩子吧!

原代码:

    for j, a in enumerate(args):
        with contextlib.suppress(NameError):
             try:
               args[j] = eval(a) if isinstance(a, str) else a  # eval strings
             except:
                args[j] = a

enumerate(args)返回的是字符串?


new_args = []  # 创建一个新列表来存储转换后的值

for a in args:
    try:
        new_arg = eval(a) if isinstance(a, str) else a  # 对字符串进行求值
    except:
        new_arg = a
    new_args.append(new_arg)  # 将转换后的值添加到新列表中

args = new_args  # 更新原始的 args 列表为转换后的列表

改成这样试试

【以下回答由 GPT 生成】

问题中的错误TypeError: 'str' object does not support item assignment是由于尝试修改一个字符串对象的索引而产生的。具体来说,代码中的args[j] = eval(a) if isinstance(a, str) else a这行尝试修改args中索引为j的元素,但是args是一个字符串,不支持修改元素值。

为了解决这个问题,可以将args从字符串对象转换为列表对象,列表对象支持修改元素值。具体做法如下:

args = list(args)  # 将args转换为列表对象

for j, a in enumerate(args):
    with contextlib.suppress(NameError):
        try:
            args[j] = eval(a) if isinstance(a, str) else a  # eval strings
        except:
            args[j] = a

args = tuple(args)  # 将args转换为元组对象(可选,根据具体需求)

这样就将原来的字符串args转换为列表对象args,然后再进行修改元素的操作。最后,如果需要的话,可以将args再转换为元组对象(可选,根据具体需求)。

最终解决方案如上所示,希望对你有帮助!如果还有其他问题,请随时询问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^