Tengo una pregunta para hacer un “output.txt”. Me gustaría escribir los resultados de word y prob (l.19) en un archivo “output.txt”. Cuando escribo “model_file.write (word, prob)”, el terminal me regaña con el mensaje “TypeError: function toma exactamente 1 argumento (2 dados)”. Intenté agregar más argumentos, pero no funcionó. ¿Alguien podría ayudarme con mi pregunta?
Esta es una cuenta de palabras
total_count = 0 train_file = open(sys.argv[1],"r") for line in train_file: words = line.strip().split(" ") words.append("") for word in words:t counts[word] = counts.get(word, 0) + 1 total_count = total_count + 1 model_file = open('output.txt',"w") for word, count in sorted(counts.items(),reverse=True): prob = counts[word]*1.0/total_count print "%s --> %f" % (word, prob) model_file.write(word, prob) model_file.close()
#
Simplemente reemplaza
model_file.write(word, prob)
con
model_file.write(word+' '+str(prob)+'\n')
Tenga en cuenta que el método write()
se implementó para tomar solo un argumento de cadena , por lo que tiene que convertir prob
en una cadena (mediante el método str()
) y luego combinarlo con la word
con el operador de cadena +
, para que tenga Sólo un argumento de cadena.
PD: aunque no ha preguntado esto, tengo que decir que si va a escribir cada palabra y su probabilidad, debe poner model_file.write(word+' '+str(prob)+'\n')
en el for
statement . De lo contrario, si se resiste a llamarla fuera de la statement for para algún propósito, también debe asignar word
y prob
fuera de la statement for
. O causaría otro error.
Podría usar la statement de print
para hacer esto:
print >>model_file, word, prob