print()出错11111111111

AttributeError: 'str' object has no attribute 'jion' 报错怎么解决?


```python

# 下载预处理CIFAR10数据集

import torch
import torchvision
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim



# 定义数据预处理方法
# torchvision.transforms是pytorch中的图像预处理包。一般用Compose把多个步骤整合到一起
transforms = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
# 下载数据集并载入数据
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transforms)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                          shuffle=True, num_workers=0)
testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transforms)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
                                         shuffle=True, num_workers=0)

# 数据类别标签
classes = ('plane', 'car', 'bird', 'cat',
           'deer', 'dog', 'frog',
           'horse', 'ship', 'truck')


# 显示图像
def imshow(img):
    img = img / 2 + 0.5  # unnormalize
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
    plt.show()



if __name__ == '__main__':
    # 随机读取一些数据
    dataiter = iter(trainloader)
    # images, labels = dataiter.next()
    images, labels = next(dataiter)
    # 显示图像
    imshow(torchvision.utils.make_grid(images))
    # print labels
    print(''.jion('%5s' % classes[labels[j]] for j in range(4)))   


你在代码中使用了jion,这是一个错误的函数名,应该是joinjoin函数用于将序列中的元素以指定的字符连接生成一个新的字符串。

将代码中的jion修改为join即可解决此问题。

以下是更正后的代码片段:

print(''.join('%5s' % classes[labels[j]] for j in range(4)))

这样,你的代码就应该可以正常运行了。

【以下回答由 GPT 生成】

在给出代码分析之前,首先注意到错误信息是AttributeError: 'str' object has no attribute 'jion'。这个错误信息中有个拼写错误,应该是join而不是jionjoin()是字符串的方法,用于将序列中的元素以指定的字符连接成一个新的字符串。因此,我们需要将代码中的jion改为join来解决这个错误。

以下是修正后的代码段:

# 下载预处理CIFAR10数据集
import torch
import torchvision
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

# 定义数据预处理方法
# torchvision.transforms是pytorch中的图像预处理包。一般用Compose把多个步骤整合到一起
transforms = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

# 下载数据集并载入数据
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transforms)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                          shuffle=True, num_workers=0)
testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transforms)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
                                         shuffle=True, num_workers=0)

# 数据类别标签
classes = ('plane', 'car', 'bird', 'cat',
           'deer', 'dog', 'frog',
           'horse', 'ship', 'truck')

# 显示图像
def imshow(img):
    img = img / 2 + 0.5  # unnormalize
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
    plt.show()

if __name__ == '__main__':
    # 随机读取一些数据
    dataiter = iter(trainloader)
    images, labels = next(dataiter)
    # 显示图像
    imshow(torchvision.utils.make_grid(images))
    # print labels
    print(''.join('%5s' % classes[labels[j]] for j in range(4)))

只需将print(''.jion('%5s' % classes[labels[j]] for j in range(4)))改为print(''.join('%5s' % classes[labels[j]] for j in range(4))),即可解决问题。



【相关推荐】



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