我有一个像这样的文本文件
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
第一个LELVEL = 3表示文件中存在最大LEVEL。 这里LEVEL 1很常见,但实际数据有时是1级和3级 当最大LEVEL为7时,可能是常见的。基本上没有明确的 预定义的模式。 我已经使用正常的数组结构在VBA中解决了它,但是当文件变成时 非常大和最大的LEVEL变得更多(像超过10) 它变得缓慢。 然后我尝试阅读更多内容并开始了解使用情况 treeset数据结构和迭代器类似于它快速工作的东西。 但这可能是Java中的事情 我们如何在VBA中做到这一点? 如果可能的话,在shell或python中也可以。
答案 0 :(得分:0)
这里有一个小小的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