Écriture de valeurs pour excel csv en python

J'ai le code ci-dessous où j'essaie d'écrire des valeurs dans un file excel, mais ma sortie ajoute une lettre dans chaque colonne, au lieu du mot entier, comme ça entrez la description de l'image ici

Je veux que le mot entier soit dans une colonne. Je passe actuellement dans un tableau qui contient les mots [u'Date / Time', u'City', u'State', u'Shape', u'Duration', u'Summary'] dans mon writer . Comment puis-je faire pour que je reçoive le mot entier dans une seule colonne?

 import requests import csv from bs4 import BeautifulSoup r = requests.get('http://www.nuforc.org/webreports/ndxlAK.html') soup = BeautifulSoup(r.text, 'html.parser') csv.register_dialect('excel') f = open('ufo.csv', 'wb') writer = csv.writer(f) headers = soup.find_all('th') header_text = [] header_count = 1 for header in headers: if header_count == len(headers): print "value being written: " + str(header_text) writer.writerows(header_text) else: header_text.append(header.text) header_count += 1 f.close() 

Vous extrayez le text d'une seule colonne via:

pour l'en-tête des en-têtes

Pour chaque colonne, vous l'écrivez comme une rangée de colonnes via:

writer.writerows (header_text)

La méthode de writers s'attend à ce qu'une list de colonnes écrive, donc elle se déroule sur elle. Vous l'avez passé une seule string, donc elle itère sur cela et écrit un caractère par colonne.

Donc, soit:

 writer.writerows([header_text]) # turn this single column into a list # or writer.writerow(header_text) # just write out as a single item 

devrait marcher.