循环中的字符串操作然后读取它

时间:2013-01-31 00:32:08

标签: python string

我确信它很简单,但在谷歌上搜索了一个小时后(新的python),我仍然不确定要解决我的问题谷歌:(你可以从我当前的代码和所需的结果中看到我想要实现的目标!

THX 太

代码:

usernames = ['joe', 'john', 'fred']

joe_image = 'c:\aaa\blahblah.jpg'
john_image = 'c:\aaa\foobar.jpg'
fred_image = 'd:\aaa\1234.jpg'


for z in usernames:
    print z
    y = z + '_image'
    print y

结果:

joe
joe_image
john
john_image
fred
fred_image

期望的结果

joe
c:\aaa\blahblah.jpg
john
c:\aaa\foobar.jpg
fred
d:\aaa\1234.jpg

4 个答案:

答案 0 :(得分:2)

你需要一个叫Dictionary

的东西
lookup_path = {'joe': 'C:\whatev', 'john':'C:\else'}
for z in usernames
    print lookup_path[z]

答案 1 :(得分:0)

您正在打印一个恰好是变量名称的字符串,而不是变量本身。

您可能希望完全重新考虑您的程序并使用字典。

users = {'joe':'c:\aaa\blahblah.jpg','john':'c:\aaa\foobar.jpg','fred':'d:\aaa\1234.jpg'}

然后,您可以使用users['joe']查找'c:\aaa\blahblah.jpg'

如果你真的想通过名称用字符串引用变量,可以使用eval。然而,这是非常糟糕的做法,并且应该始终谨慎地进行,并且希望永远不会这样做。

答案 2 :(得分:0)

您可以拥有两个单维数组,也可以将初始数组设为二维而非单维

所以你要么

USER_NAMES(X,Y,Z) 和 User_Photos(X,Y,Z) User_Photo(x)用于User_Name(x) User_Photo(y)用于User_Name(y)等

或者你会的 User_Info(NameColumn,PhotoColumn)

然后UserInfo(1,0)可能是“乔” 然后UserInfo(1,1)可能是“c:\ aaa \ blahblah.jpg”)

并且

然后UserInfo(2,0)可能是“John” 然后UserInfo(2,1)可能是“c:\ aaa \ foobar.jpg”)

答案 3 :(得分:0)

一种不同的方法是使用命名元组,为了清晰起见,你要付出代价为简洁的代价。

from collections import namedtuple

Pair = namedtuple('Pair', ['name', 'filename'])

them = [ Pair('joe', r'c:\aaa\blahblah.jpg'),
        Pair('john', r'c:\aaa\foobar.jpg'),
        Pair('fred', r'd:\aaa\1234.jpg')
        ]

for who in them:
    print who.name
    print who.filename

给出

joe
c:\aaa\blahblah.jpg
john
c:\aaa\foobar.jpg
fred
d:\aaa\1234.jpg