我有一个正在读取文本文件的循环。每次循环找到不同的东西时,我希望它创建一个新变量并将该行文本中的值赋给新创建的变量。因此,如果文本文件如下所示:
3 3 6 1 3 6
该程序将产生3个变量,一个用于1个,一个用于3个,一个用于6.如何执行此操作>
答案 0 :(得分:3)
你可能想要的是......
>>> set("3 3 6 1 3 6".split())
set(['1', '3', '6'])
答案 1 :(得分:1)
有几种方法:
mydict = {}
for x in myfile.read().split():
mydict[x] = None
print mydict
或者:
class VarContainer(object):
pass
v = VarContainer()
for x in myfile.read().split():
setattr(v, 'var' + x, None)
print v.var3
但是你要做的事情有点不清楚。
答案 2 :(得分:1)
您可以使用exec
内置来创建变量。
Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [3,3,6,1,3,6]
>>> for e in a:
... exec 'var%s = %e' % (e,e)
...
...
>>> var3
3.0
>>> var6
6.0
>>> var1
1.0
>>>
修改强> 这是一个糟糕的解决方案,永远不应该使用。然而,重要的是要知道这样的事情是可能的。
答案 3 :(得分:0)
您可以将值存储在数组中:
(假设python 2.7) http://docs.python.org/library/array.html
然后,您可以使用array.index(x)
搜索该值是否已存在于数组中,并array.append(x)
将其添加到数组中
答案 4 :(得分:0)
假设text_file是可迭代的,
def get_unique_numbers(text_file):
temp = []
for number in text_file:
if number not in temp:
temp.append(number)
return temp
答案 5 :(得分:0)
此代码应该按照您的要求执行。
import sys
from string import ascii_letters
# Task 1, remove duplicate elements.
def nodup(fn):
f = open(fn)
data = f.read().split()
res = []
res.extend((i for i in data if i not in res))
return res
# Task 2, create the new variables on the fly
module = sys.modules[__name__]
filename = "data"
for idx, value in enumerate(nodup(filename)):
setattr(module, ascii_letters[idx], value)
print (a, b, c)
# ('3', '6', '1')