Stefan
Stefan

Reputation: 3

Counting sub-element in string?

Say I have a string = "Nobody will give me pancakes anymore"

I want to count each word in the string. So I do string.split() to get a list in order to get ['Nobody', 'will', 'give', 'me', 'pancakes', 'anymore'].

But when I want to know the length of 'Nobody' by inputing len(string[0]) it only gives me 1, because it thinks that the 0th element is just 'N' and not 'Nobody'.

What do I have to do to ensure I can find the length of the whole word, rather than that single element?

Upvotes: 0

Views: 74

Answers (3)

user5213304
user5213304

Reputation:

words = s.split()   
d = {word : len(word) for word in words}

or

words = s.split()
d = {}

for word in words:
    if word not in d:
        d[word]=0
    d[word]+=len(word)

In [15]: d  
Out[15]: {'me': 2, 'anymore': 7, 'give': 4, 'pancakes': 8, 'Nobody': 6,   'will': 4}
In [16]: d['Nobody']
Out[16]: 6

Upvotes: 0

OneCricketeer
OneCricketeer

Reputation: 191733

Yup, string[0] is just 'N'

Regarding your statement...

I want to count each word in the string

>>> s = "Nobody will give me pancakes anymore"
>>> lens = map(lambda x: len(x), s.split())
>>> print lens
[6, 4, 4, 2, 8, 7]

So, then you can do lens[0]

Upvotes: 1

Martijn Pieters
Martijn Pieters

Reputation: 1121834

You took the first letter of string[0], ignoring the result of the string.split() call.

Store the split result; that's a list with individual words:

words = string.split()
first_worth_length = len(words[0])

Demo:

>>> string = "Nobody will give me pancakes anymore"
>>> words = string.split()
>>> words[0]
'Nobody'
>>> len(words[0])
6

Upvotes: 4

Related Questions