擅长:python、mysql、java
<pre><code>def read_file(fp,hash):
for l in fp:
p = l[1:].find(']')
k = l[p+3:-1]
v = l[1:p+1].split(",")
if k not in hash:
hash[k] = v
else:
hash[k] = zip(hash[k], v)
hash = {}
for fname in ('f1.txt', 'f2.txt'):
with open(fname) as fp:
read_file(fp, hash)
for k,v in hash.items():
print "[{0}] {1}".format(",".join("^".join(vv) for vv in v), k)
</code></pre>
<p>这是一种基本的方法,如果你需要文件中的行按照它们被读取的顺序,你就必须做更多的工作。你知道吗</p>
<p>下面是我得到的结果:</p>
<pre><code>[a^a2,b^b2,c^c2,d^d,e^e,f^f] 13,4,6
[dog^banana,cat^cat2,monkey^monkey2] 1,2,3
</code></pre>
<p>编辑:</p>
<p>这还假设每个<code>key</code>ie.13、4、6在一个文件中出现一次。如果它可能出现多次,您必须将hash[k]=zip(hash[k],v)更改为更复杂的值,例如</p>
<pre><code>if k not in hash:
hash[k] = [[vv] for vv in v]
else:
for i,vv in enumerate(v):
hash[k][i].append(vv)
</code></pre>