如何在一个句子中获得单词的长度?

时间:2014-03-30 20:51:38

标签: python

我试图在句子中得到每个单词的长度。我知道你可以使用“len”函数,我只是不知道如何得到每个单词的长度。

而不是这个

>>> s = "python is pretty fun to use"
>>> len(s)
27
>>>

我想得到这个

6, 2, 6, 3, 2, 3

这是每个单词的实际长度。

4 个答案:

答案 0 :(得分:15)

尝试此操作,使用map()对句子中的每个单词应用len(),了解split()会为句子中的每个单词创建一个列表:

s = "python is pretty fun to use"
map(len, s.split())       # assuming Python 2.x
list(map(len, s.split())) # assuming Python 3.x

或者,您可以使用list comprehension获得相同的效果:

[len(x) for x in s.split()]

在这两种情况下,结果都是一个列表,其中包含句子中每个单词的长度:

[6, 2, 6, 3, 2, 3]

答案 1 :(得分:8)

使用map 1 str.split

>>> s = "python is pretty fun to use"
>>> map(len, s.split())
[6, 2, 6, 3, 2, 3]
>>>

1 注意map在Python 3中返回一个迭代器。如果您使用的是该版本,则可能需要将其放在{{1}中获取Python 2 list返回的整数列表:

map

答案 2 :(得分:7)

使用此:

s = "python is pretty fun to use"
[len(x) for x in s.split()]

示例输出:

>>> [len(x) for x in s.split()]
[6, 2, 6, 3, 2, 3]

后台发生了什么?

s.split()打破字符串中的空格并返回列表中句子中的每个单词:

>>> s.split()
['python', 'is', 'pretty', 'fun', 'to', 'use']

然后我们取每个单词的len()来得到单词的长度。之后,我们获取每个长度并将其附加到列表中,以便可以方便地返回结果。

这一切都发生在list comprehension

[len(x) for x in s.split()]

还有点迷茫吗?这在概念上是相同的事情,只是更明确地分解:

results = []
for x in s.split():
    word_length = len(x)
    results.append(word_length)
print results 

如果您希望将它们单独打印出来,就像在您的问题中一样,请使用:

for x in [len(x) for x in s.split()]: 
    print x

答案 3 :(得分:0)

iCodez是对的 - 但它需要从脚本表单中进行一些小的调整。

s = 'python is pretty fun to use'
li = list(map(len, s.split()))

然后输入shell或print语句:

print(li)