In my opinion, you’d be much better off using a script for this. The script would read each line of the text file and create a new keyframed value for the source text at each frame.
Alternatively, to get the expression to work, you’d have to alter your text file so that each line is a valid expression statement, like this:
txt = ;
txt = “your first word”;
txt = “your second word”;
Then you could use a source text expression that assigns a new word at each frame. like this (not tested):
myPath = “/C/Temp/text_test.txt”;
f = timeToFrames();
At each frame, the expression has to read in the enitire 1800 line text file. If you use a script rather than the expression, you only have to read the text file once. Of course, it’s a bit of work to create such a script.