我有两个文本文件,我能够很好地连接。 f1是标记和计数(2个col),f2是标记和向量(1 + n cols,其中n =向量数)。令牌始终显示在每个文件的第一个列中。
#concatenate these two txt files into a new file
with open('s1_5w10f_vocab.txt')as f1, open('s1_5w10f_vectors.txt') as f2, open('/Users/dlhoffman/5w10f.txt', 'w') as f3:
for x,y in zip(f1,f2):
f3.write(x.strip() + " " + y.strip() + '\n')
以下是新连接文件的一行:
new 10950 new -0.272530 -0.001466 -0.283271 0.113374 -0.741011 -0.858208 -0.044069 0.787044 0.550195 -0.429844
我只需要令牌(在上面的例子中为“new”)在行的开头出现一次。有没有办法将它们各自的第一列“连接”这两个文件,以便在新的连接文件中,“mergeed by”列只有一次?
答案 0 :(得分:1)
如果您的元素由空格分隔,则可以通过以下方式从第二行中删除前导令牌。
with open('s1_5w10f_vocab.txt')as f1, open('s1_5w10f_vectors.txt') as f2, open('/Users/dlhoffman/5w10f.txt', 'w') as f3:
for x,y in zip(f1,f2):
f3.write(x.strip() + " " + y[y.index(' '):].strip() + '\n')
这会在找到的第一个空格之后创建第二个字符串的子字符串,然后在其上调用strip()。
快乐的编码!