When you do list = f.read() , the entire content of file is read into list as a string. And as you know, python iterates over a string variable as if it is an array. And list here is an array of characters and hence your output is all characters one below the other. Here's how you intended to do it:
f = open("sitelist.txt", "r")
list = []
for line in f:
list.append(line)
f.close()
And please always remember to close the filehandle after use.
with open(r'C:\Users\name\OneDrive\Python\sitelist.txt') as f:
sites = f.readlines()
var=StringVar ()
var.set ('Click to Select Site')
sitelist = OptionMenu (root, var, *sites)
sitelist.pack (fill=X,padx=10)
readlines() loads the file into an array, instead of read() which it loads the file as a string. list is already used by Python as something else, I would avoid it. "\n" can cause problems since it represents the end of line, use r'' for raw. with open() takes care of the maintenance associated with opening a file.