2015-03-03 42 views
0

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

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' 

这意味着,IMG 0等于10_image_plane_XX_YY.fits的图像名称,IMG1等于20_image_plane_XX_YY.fits的图像名称等,所以我只需要使用img0,img1,...来进行进一步分析。 但是,当我运行这个循环中,它给了我下面的错误

TypeError: 'str' object does not support item assignment 

请让我知道这方面的任何sollution。

在此先感谢!

干杯,

-Viral

回答

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' 
+0

谢谢rchang。这正是我想要的。 – 2015-03-03 12:16:57

0

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

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

我想你img应该是一个列表或类似的东西。 Plz检查你的代码。

0

的问题是在img[i],因为你试图将一个字符串赋值给字符串指数 - 为错误告诉你 - 串不支持的项目分配。

您可以使用,而不是一个字典:

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