You ask why this does not work. It doesn't work because "\n" is a single character not two characters. Check it out:
In [7]: len("\n")
Out[7]: 1
Therefore, Python recognizes the backslash in "\n" not as a escape character, but part of the single character itself. If you want to keep the backslash, but lose the "n", you need to target the "\n" completely.
In [15]: item.replace("\n", "\\")
Out[15]: '^^\\^'
But that doesn't work, we now have two backslashes in the string, right? Wrong, one of them is escaped!
In [16]: print(item.replace("\n", "\\"))
^^\^
Escape characters can be tricky if you don't use them often. I refresh my memory, when needed, with simple examples in IPython.
Per kwkt's comment, the solution is:
In [1]: item = '^^\n^'
In [2]: item.replace('\n^', '')
Out[2]: '^^'