2013-02-01 32 views
1

我想打一个程序,读取一个.txt文件看起来像这样“列出的名单”:读一个txt,使一个

(表1)

VAR1,VAR2,VAR3, VAR4

VAR5,var6

[LIST 2]

var7,var8,var9

正如标题所说,我想列出“[”,“]”之间的所有术语,并为其中列出的每个术语创建一个列表(例如:LIST2 = [var7, var8, var9] )。

到目前为止,我做了间“[]”的术语列表:

try: 
f = open("tm.txt", "r") 
try: 
    string = f.read()  
finally: 
    f.close() 
except IOError: 
    pass 

lista = re.findall(re.escape("[")+"(.*)"+re.escape("]"),string) 

for i in range(len(lista)): 
    vars()[lista[i]] = i #makes str into var and gives a value to them 
    print vars()[lista[i]] #prints what is inside of each var of the list 
print lista #prints each var names 

正如你看到的,唯一剩下要做的就是这些新做的变量分配到列表他们在.txt文件下的术语。我试图这样做,所以我可以通过TKinter为我制作的独立游戏制作配置器。编辑.txt文件本身非常烦人。

+2

HTTP ://docs.python.org/2/library/configparser.html可能会帮助你 – TankorSmash

+0

为什么不使用列表字典?如果你的变量是key = value对,就是一个字典的字典。这可能会在使用数据时节省头痛。 –

回答

0

ConfigParser模块的例子部分:

>>> import ConfigParser 
>>> import io 
>>> s = """[LIST 1] 
... 
... var1,var2,var3,var4 
... 
... var5,var6 
... 
... [LIST 2] 
... 
... var7,var8,var9""" 
>>> config = ConfigParser.RawConfigParser(allow_no_value=True) 
>>> config.readfp(io.BytesIO(s)) 
>>> config.items('LIST 1') 
[('var1,var2,var3,var4', None), ('var5,var6', None)] 
0

我想你可能没有任何意图使用模块(如Myslef),所以我的建议是:

file1 = open('tm.txt') 
flist = file1.readlines() 
file1.close() 
flist = [i.rstrip() for i in flist] 
c = 0 
final = [] 
for i in flist: 
    if(i == '[LIST {0}]'.format(c+1)): 
     temp = [] 
     final.append(temp) 
     c += 1 
    else: 
     for j in i.split(','): 
      temp.append(j) 
      final[len(final)-1] = temp 
print(final) 

# Each Member OF 'final' List is The List You Want!