Niklas Rosencrantz
Niklas Rosencrantz

Reputation: 26647

How to find the longest word with python?

How can I use python to find the longest word from a set of words? I can find the first word like this:

'a aa aaa aa'[:'a aa aaa aa'.find(' ',1,10)]

'a'

rfind is another subset

'a aa aaa aa'[:'a aa aaa aa'.rfind(' ',1,10)]

'a aa aaa'

Upvotes: 1

Views: 21604

Answers (5)

APPrentice
APPrentice

Reputation: 21

I thought it meant more like (code below) which outputs the longest word in the string. In this case it is "sentence" however, simply change return(len(s)) which would output howmany characters are in the longest word which would be 8.

def longest_word(text):
    s = max(text.split(), key = len)
    return(s)

if __name__ == "__main__":
    print(longest_word("This is a sentence with words and such."))

Upvotes: 1

Md Shafiqul Islam
Md Shafiqul Islam

Reputation: 39

def largest_word(sentence):
    split_sentence = sentence.split(' ')
    largest_word = ''
    for i in range(len(split_sentence)):
        if len(split_sentence[i]) > len(largest_word):
           largest_word = split_sentence[i]
    print(largest_word)


sentence = "Improve your coding skills with python"

largest_word(sentence)

Upvotes: 0

Rohit
Rohit

Reputation: 19

Another way to find longest word in string:

a="a aa aaa aa"
b=a.split()
c=sorting(b,key=len)
print(c[-1])    

Upvotes: 0

ThomasH
ThomasH

Reputation: 23516

Here is one from the category "How difficult can you make it", also violating the requirement that there should be no own class involved:

class C(object): pass
o = C()
o.i = 0
ss = 'a aa aaa aa'.split()
([setattr(o,'i',x) for x in range(len(ss)) if len(ss[x]) > len(ss[o.i])], ss[o.i])[1]

The interesting bit is that you use an object member to maintain state while the list is being computed in the comprehension, eventually discarding the list and only using the side-effect.

But please do use one of the max() solutions above :-) .

Upvotes: 2

balpha
balpha

Reputation: 50908

If I understand your question correctly:

>>> s = "a aa aaa aa"
>>> max(s.split(), key=len)
'aaa'

split() splits the string into words (seperated by whitespace); max() finds the largest element using the builtin len() function, i.e. the string length, as the key to find out what "largest" means.

Upvotes: 40

Related Questions