将图像数组分配给字符串

时间:2015-03-03 11:07:57

标签: python

我想将我的图片名称分配给另一个字符串。下面我描述了这个问题。

num=[10,20,30,40,50,60,.....500]
for i in range(len(num)):
  img[i]=str(num[i])+'_image_plane_XX_YY.fits' 

所以在这个循环后它应该给我,

img0='10_image_plane_XX_YY.fits'
img1='20_image_plane_XX_YY.fits'
....
img499='500_image_plane_XX_YY.fits'

这意味着,img0等于10_image_plane_XX_YY.fits的图像名称,img1等于20_image_plane_XX_YY.fits等的图像名称。所以我只需要使用img0,img1,..进行进一步分析我的相应图像。 但是,当我运行此循环时,它会给我以下错误

TypeError: 'str' object does not support item assignment

请告诉我任何解决方法。

提前致谢!

干杯,

-Viral

3 个答案:

答案 0 :(得分:2)

对于我认为你想要做的事情,列表理解似乎是更自然的方法。

num=[10,20,30,40,50,60]  # I truncated your array for brevity
img = [str(i)+'_image_plane_XX_YY.fits' for i in num]

这会将img构造为包含已组装字符串的数组。例如:

>>> num=[10,20,30,40,50,60]
>>> img = [str(i)+'_image_plane_XX_YY.fits' for i in num]
>>> img[0]
'10_image_plane_XX_YY.fits'
>>> img[3]
'40_image_plane_XX_YY.fits'

答案 1 :(得分:0)

这只有一个原因:你的img是一个字符串。

这个错误信息意味着:字符串是不可变的,所以你不能就地改变它们的字符。

我认为你img应该是一个列表或类似的东西。请检查您的代码。

答案 2 :(得分:0)

问题发生在img[i],因为您正在尝试将字符串分配给字符串索引,而且 - 正如错误告诉您的那样 - 字符串不支持项目分配。

您可以改用dict:

img = {}
num=[10,20,30,40,50,60,.....500]
for i in range(len(num)):
   img[i]=str(num[i])+'_image_plane_XX_YY.fits'

这样img就变成了:

{ 0:'10_image_plane_XX_YY.fits', 
  1: '20_image_plane_XX_YY.fits',
  ....
  499: '500_image_plane_XX_YY.fits'
}

您可以将图片名称称为:

>>> img[0]
'10_image_plane_XX_YY.fits'

>>> img[1]
'20_image_plane_XX_YY.fits'

但是,如果您不需要除整数之外的其他任何内容作为键,那么您应该将列表理解用作suggested by rchang