Wrap it in a list, writerow expects iterability, so it iterates over your string, dividing it into separate characters:
sent = [' '.join(" ".join(v) for v in sent)]
You also need to join the lines in the tuple as described above, do not call str on the tuple ie:
t = [(u'My', u'D'), (u'dog', u'N')]
print(" ".join([" ".join(v) for v in t]))
My D dog N
You can also just use file.write and pass the concatenated string to it:
with open("testnucsv.csv", "w") as f:
for sent in bdictionary:
f.write(" ".join([" ".join(v) for v in sent])+"\n")
source
share