我一直试图找到一些关键字列在另一个文件中的文件,如果找到该关键字,则打印该关键字。这是我的代码,python不会产生任何错误,但我也没有看到任何打印。 (我很确定关键字存在于我使用find函数的文件中)
keyword_array = []
with open('localDrive\\C0577785-MeshID.txt') as my_keywordfile:
for keyword in my_keywordfile.readlines():
keyword_array.append(keyword.lower())
# print(keyword)
with open('localdrive\\file') as my_dataset:
for line in my_dataset.readlines():
for keywords in keyword_array:
if line.lower().find(keywords) >= 0:
print("keywords:", keywords,"\n")
break
我错过了什么吗? 谢谢
答案 0 :(得分:1)
当您从文件中读取一行时,它通常在该行的末尾有一个换行符...
因此,在将行添加到列表之前,应使用def loadBin(file: String) = {
def readUntil(inputStream: DataInputStream, term: Char, maxLength: Int = 1024 * 8): String = {
var char: Char = inputStream.readByte().toChar
val str = new StringBuilder
while (!char.equals(term)) {
str.append(char)
assert(str.size < maxLength)
char = inputStream.readByte().toChar
}
str.toString
}
val inputStream: DataInputStream = new DataInputStream(new GZIPInputStream(new FileInputStream(file)))
try {
val header = readUntil(inputStream, '\n')
val (records, dimensions) = header.split(" ") match {
case Array(records, dimensions) => (records.toInt, dimensions.toInt)
}
new Word2VecModel((0 until records).toArray.map(recordIndex => {
readUntil(inputStream, ' ') -> (0 until dimensions).map(dimensionIndex => {
java.lang.Float.intBitsToFloat(java.lang.Integer.reverseBytes(inputStream.readInt()))
}).toArray
}).toMap)
} finally {
inputStream.close()
}
}
函数删除任何换行符。
希望能帮到你
答案 1 :(得分:0)
归功于@jasonharper 从关键字文件中读取的行包括尾随换行符;因此,除非关键字是最后一行,否则它们将不会出现在您的数据文件中。使用keyword_array.append(keyword.strip()。lower())“
构建关键字列表