1

我想制作一个读取如下.txt文件的程序:

[清单 1]

变量 1、变量 2、变量 3、变量 4

变量 5,变量 6

[清单 2]

变量 7、变量 8、变量 9

正如标题所说,我想列出“[”,]”之间的所有术语,并为这些术语中的每一个创建一个列表,由它们下面列出的术语组成(例如:)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文件很烦人。

4

2 回答 2

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)]
于 2013-02-01T23:03:07.573 回答
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!
于 2013-02-02T08:03:13.567 回答