2017-03-02 38 views
1

我需要輸出與一個2元素列表中的字符數,其給出了每個字的字符數列表:輸出從一個句子的列表,並計算字符數爲每個單詞

[['How', 3], ['are', 3], ['you', 3], ['today', 5]] 

我使用的是功能

DEF CHAR(S):

l = [] # list for holding your result 

    # convert string s into a list of 2-element-lists 
    s = text.split() 
    s = [[word ,len(word)] for word in s.split()] 
    print("Output:\n", s) 
    print() 
    return l 


text = "How are you today" 
l = char(text) 
print() 

,但我得到這個輸出,其中它總字符數爲每個單詞,而不是爲每個單詞特定計數:

[['How', 17], ['are', 17], ['you', 17], ['today', 17]] 

任何幫助表示讚賞,謝謝。

+4

使用LEN(W),而不是LEN(文本) – abccd

+0

因爲len(text)是整個字符串的長度 – abccd

+0

@Supernova,所以請考慮使用傳遞給函數的參數's',而不是使用全局變量'text'。 – lmiguelvargasf

回答

3

您的問題是您正在計算文本中的字符數,但您必須對每個字中的字符進行計數。最後,你甚至可以簡化代碼:

text = "How are you today" 
l = char(text) 
print(l) 

輸出繼電器:

def char(s): 
    return [[word ,len(word)] for word in s.split()] 

然後你就可以把它叫做

[['How', 3], ['are', 3], ['you', 3], ['today', 5]] 
+0

它說w不是def我知道我以前用過w而沒有定義它...... – Supernova

+0

@Supernova,很好的接收。現在,它解決了。 – lmiguelvargasf

+0

@Imiguelvargasf它的名字沒有屬性拆分 – Supernova

2

您有確定範圍的問題。您在外部變量text上調用len()而不是每個循環迭代,變量名稱爲w,因此您將獲得每個單詞的總字符數。

你有你在外部變量text,而不是傳遞到功能,您呼叫s對象調用split()char函數中的另一個問題。

相關問題