我有一个词典文件,每行都包含一个单词。
titles-sorted.txt
我希望能够将所有存在于字典中的单词替换为其对应的id,以便输出结果如下:
titles-sorted.txt
a&a
a&b
a&c_bus
a&e
a&f
a&m
....
每个单词的行号即为该单词的ID。
我还有另一个文件,每行包含用制表符分隔的一组单词。
a.txt
a_15 a_15_highway_(sri_lanka) a_15_motorway a_15_motorway_(germany) a_15_road_(sri_lanka)
我希望能够将所有存在于字典中的单词替换为其对应的id,以便输出结果如下:
3454 2345 123 5436 322 ....
所以我写了以下Python代码来实现这个功能:
f = open("titles-sorted.txt")
lines = f.readlines()
titlemap = {}
nr = 1
for l in lines:
l = l.replace("\n", "")
titlemap[l.lower()] = nr
nr+=1
fw = open("a.index", "w")
f = open("a.txt")
lines = f.readlines()
for l in lines:
tokens = l.split("\t")
if tokens[0] in titlemap.keys():
fw.write(str(titlemap[tokens[0]]) + "\t")
for t in tokens[1:]:
if t in titlemap.keys():
fw.write(str(titlemap[t]) + "\t")
fw.write("\n")
fw.close()
f.close()
但是这段代码运行速度非常慢,让我怀疑我是否做得正确。
这种方法是否高效?
readlines
,其实不需要这样做,并且取决于您使用的Python版本,它可能会一次性读取整个文件,这并不必要。 您可以简单地使用for l in f:
。 - njzk2