csv.l'écrivain écrit chaque caractère du mot dans la colonne séparée/cellule
Objectif: extraire le texte de la balise d'ancrage à l'intérieur de toutes les lignes dans les models
et le mettre dans un fichier csv.
J'essaie ce code:
with open('Sprint_data.csv', 'ab') as csvfile:
spamwriter = csv.writer(csvfile)
models = soup.find_all('li' , {"class" : "phoneListing"})
for model in models:
model_name = unicode(u' '.join(model.a.stripped_strings)).encode('utf8').strip()
spamwriter.writerow(unicode(u' '.join(model.a.stripped_strings)).encode('utf8').strip())
Ça fonctionne sauf que chaque cellule dans le csv ne contient qu'un seul caractère.
Comme ceci:
| S | A | M | S | U | N | G |
Au lieu de:
|SAMSUNG|
Bien sûr, je suis en manque de quelque chose. Mais quoi?
Vous devez vous connecter pour publier un commentaire.
writerow
accepte une séquence. Vous êtes en lui donnant une chaîne unique, c'est le traitement que comme une séquence, et les cordes agissent comme des séquences de caractères.Quoi d'autre voulez-vous dans cette ligne? Rien? Si oui, faire une liste d'un élément:
(Par le chemin, la
unicode()
appel est totalement inutile puisque vous êtes déjà rejoindre avec un caractère délimiteur.).writerow()
nécessite une séquence (''
,()
,[]
) et la place de chaque index dans sa propre colonne de la ligne, de façon séquentielle. Si la chaîne que vous souhaitez n'est pas un élément dans une séquence,writerow()
va se répéter sur chaque lettre de votre chaîne et de chacun seront écrites à votre fichier CSV dans une cellule séparée.après vous
import csv
Si c'est votre liste:
Le script ci-dessus produira les éléments suivants CSV:
strip-teaseuses.csv
Si vous souhaitez que chaque nom dans sa propre cellule, la solution est tout simplement de placer votre chaîne (
item
) dans une séquence. Ici j'ai utiliser des crochets[]
. :Le script avec
.writerow([item])
produit les résultats escomptés:Strippers2.csv
Juste l'entourer d'une liste de signe (j'.e [])