2017-01-10 1 views
3

Je traite des chaînes de texte telles que les suivantes: LN1 2DW, DN21 5BJ, DN21 5BL, ...Comptez le nombre d'éléments dans une chaîne séparés par des virgules

En Python, comment puis-je compter le nombre d'éléments entre virgules? Chaque élément peut être composé de 6, 7 ou 8 caractères, et dans mon exemple il y a 3 éléments affichés. Le séparateur est toujours une virgule.

Je n'ai jamais rien fait en rapport avec l'exploration de texte, alors ce serait un début pour moi.

+3

virgules de comptage (http://stackoverflow.com/a/1155647/5869805) et ajouter 1 – burkay

+2

Quelqu'un peut-il me dire pourquoi cela est tellement downvoted? Je sais qu'on devrait normalement inclure le code et ce que vous avez essayé, mais allez. Ceci est une question spécifique, claire et simple. Il ne semble pas être une question de type «résoudre mon devoir», et je trouve tout à fait juste que l'OP ne connaisse pas les mots conceptuels dont il aurait eu besoin pour google lui-même. Pour ma part, je ne pense pas que ce soit une mauvaise question. – KjetilNordin

+1

parce que c'est une question si fondamentale. –

Répondre

15

Vous pouvez compter le nombre de virgules:

text.count(",") + 1 
# 3 
8

Si la virgule (,) est le séparateur, vous pouvez simplement utiliser str.split sur la corde puis len(..) sur le résultat:

text = 'LN1 2DW, DN21 5BJ, DN21 5B' 
number = len(text.split(',')) 

Vous pouvez également réutiliser la liste des éléments. Par exemple:

text = 'LN1 2DW, DN21 5BJ, DN21 5B' 
tags = text.split(',') 
number = len(tags) 
#do something with the `tags` 
+1

Text.count (',') + 1 –

+2

Ce travail est en effet plus efficace, mais la prochaine étape est probablement l'itération sur les éléments. –

+0

Les espaces ne sont pas ignorés ici – sagar

1

Willien et Psidom déjà mentionné count,

Je voulais juste ajouter que dans python une chaîne est également énumérables, ainsi la compréhension de liste pourrait également être appliquée:

n = len([c for c in ','+text if c==',']) 

ou

n = sum(1 for c in ','+text if c==',') 
+1

Pourquoi feriez-vous cela?SO devrait fournir les meilleures réponses pas toutes les alternatives possibles –

+1

N'hésitez pas à voter vers le bas, si ma réponse est contre la politique SO Je suis sûr que vous pourriez demander à un modérateur de l'effacer –

+1

Vous ne violez aucune règle, mais pourquoi présenter des alternatives pires que les réponses existantes. Il y a tellement de réponses possibles, comme si vous pouviez inclure 'len (list (filter (lambda x: ord (x) == 44, text))) + 1' aussi mais ça n'ajoute rien –