我有这样的文本文件
LEVEL=3
LEVEL1=CLASS7
LEVEL2=ROLLNO1
LEVEL3=MALE
JOHN,12
LEVEL2=ROLLNO2
LEVEL3=FEMALE
JULIA,11
我们需要读取此文件并需要输出
CLASS7|ROLLNO1|MALE|JOHN|12
CLASS7|ROLLNO2|FEMALE|JULIA|11
1st LELVEL = 3表示文件中存在最大LEVEL。这里LEVEL 1是常见的,但在实际数据中,当最大LEVEL为7时,有时LEVEL 1和3可能是常见的。基本上没有明确的预定义模式。我已经使用正常的数组结构在VBA中解决了它但是当文件变得非常大并且最大LEVEL变得更多(如超过10)时它变得缓慢。然后我尝试阅读更多的东西,并开始了解使用treeset数据结构和迭代器它快速工作的东西。但这可能是Java中的事情。 我们如何在VBA中做到这一点?如果可能在shell或python中也可以。
这是一个小python方法,但非常具体的字符串格式,“text.txt”包含您的文本:
f = open( "text.txt", 'r' )
text = f.readlines()
f.close()
d = { }
for line in text :
pair = line.split( '=' )
if len( pair ) == 2 : # save Levels as pairs in dict
d[pair[0].strip()] = pair[1].strip()
else : line without level means time for output
out = [] # gather the values in here
try :
for i in range( 1, int( d['LEVEL'] ) + 1 ) : # number of levels (1-based)
out.append( d['LEVEL' + str( i )] ) # add every level
except KeyError :
pass
out += line.split( ',' ) # add current line
out_as_string = '|'.join( out ) # convert to string with "|"
print( out_as_string )
输出:
CLASS7|ROLLNO1|MALE|JOHN|12
CLASS7|ROLLNO2|FEMALE|JULIA|11