Python 3中:字符串转换为变量[重复](Python 3: Convert String to

2019-10-17 08:17发布

这个问题已经在这里有一个答案:

  • 如何创建一个可变数量的变量? 13个回答

我从.txt文件中读取文本,需要使用我解读为一个类的实例变量的数据之一。

    class Sports:
        def __init__(self,players=0,location='',name=''):
            self.players = players
            self.location = location
            self.name = name
        def __str__(self):
            return  str(self.name) + "is played with " + str(self.players) + " players per team on a/an " + self.location + "."

    def makeList(filename):
        """
        filename -- string
        """
        sportsList = []
        myInputFile = open(filename,'r')
        for line in myInputFile:
            record = myInputFile.readline()
            datalist = record.split()
            sportsList.append(datalist[0])
            datalist[0] = Sports(int(datalist[1]),datalist[2],datalist[3])        
        myInputFile.close()
        print(football.players)

    makeList('num7.txt')

我需要转换数据列表[0],它是一个字符串,一个变量名称(基本上没有引号),因此它可以被用来创建该名称的一个实例。

Answer 1:

在我开始之前,我必须说,创建这样的变量是一个非常糟糕的(和潜在的危险)的编码实践。 这么多可以去错了,这是很容易失去跟踪您自发创建的名称。 此外,这样的代码是可怕的维护。

然而,在一个蓝色的月亮的场景曾经在那里你必须创建一个变量一个字符串,你可以这样做:

>>> a="b"
>>> exec(a+"=1")
>>> print(b)
1
>>>

所以,在你的代码,你可以做一些事来的效果:

exec(datalist[0]+"= Sports(int(datalist[1]),datalist[2],datalist[3])")

再次,这是不应该使用的99%的时间非常hackish的解决方案。 但是,对于1%完全不正常情况的缘故,我想表明,它可以做到的。



文章来源: Python 3: Convert String to variable [duplicate]