python简单文本处理
有一个a.txt存储有(以“_”隔开,数字维数一致都为100维)中国_1234美国_2345人_1345另有一个b.txt存储有美国人中国人法国人要求生成一个新的c.tx...
有一个a.txt存储有(以“_”隔开,数字维数一致都为100维)
中国_1 2 3 4
美国_2 3 4 5
人_1 3 4 5
另有一个b.txt存储有
美国 人
中国 人
法国 人
要求生成一个新的c.txt存放两个向量的和
美国 人_3 6 8 10
中国 人_2 5 7 9
法国 人_1 3 4 5
德国 总理_0 展开
中国_1 2 3 4
美国_2 3 4 5
人_1 3 4 5
另有一个b.txt存储有
美国 人
中国 人
法国 人
要求生成一个新的c.txt存放两个向量的和
美国 人_3 6 8 10
中国 人_2 5 7 9
法国 人_1 3 4 5
德国 总理_0 展开
2个回答
展开全部
最后结果中的 德国 总理那一行不知道怎么来的,应该在 b.txt 中有同样的前缀才对。
data = dict()
# process a.txt
for line in open("a.txt", "r"):
k, s, v = line.partition("_")
if s != "_":
continue
data[k.strip()] = [int(x) for x in v.split()]
def sum(a, b):
result = []
maxlen = max(len(a), len(b))
for i in range(maxlen):
v1 = a[i] if i < len(a) else 0
v2 = b[i] if i < len(b) else 0
result.append(v1 + v2)
return result
# generate c.txt
fd = open("c.txt", "w")
for line in open("b.txt", "r"):
line = line.strip()
if len(line) == 0:
fd.write("\n")
continue
result = []
for k in line.split():
result = sum(result, data.get(k, [0]))
fd.write("{}_{}\n".format(line, ' '.join([str(i) for i in result])))
fd.close()
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询