2015-04-06 23 views
0

整個問題:編寫一個函數,它將一個字符串列表作爲參數,並返回一個列表,其中包含大寫爲標題的每個字符串。也就是說,如果輸入參數是["apple pie", "brownies","chocolate","dulce de leche","eclairs"],那麼你的函數應該返回["Apple Pie", "Brownies","Chocolate","Dulce De Leche","Eclairs"]如何只大寫列表中每個字符串的標題?

我的計劃(修訂版):

我想我得到了我的程序運行NOW!問題是,當我輸入:["apple pie"]它返回:['"Apple Pie"']

def Strings(): 
    s = [] 
    strings = input("Please enter a list of strings: ").title() 
    List = strings.replace('"','').replace('[','').replace(']','').split(",") 
    List = List + s 

    return List 

def Capitalize(parameter): 
    r = [] 
    for i in parameter: 
    r.append(i) 

    return r 

def main(): 
    y = Strings() 
    x = Capitalize(y) 
    print(x) 

main() 

我得到一個錯誤AttributeError: 'list' object has no attribute 'title' 請幫幫忙!

+0

你給我們您正在試圖解決的問題的說明,所以,什麼是你的問題? – belwood 2015-04-06 00:14:22

+0

如何將列表中每個字符串的標題大寫? – brilliant 2015-04-06 00:15:14

回答

0

只需遍歷名稱列表,然後針對每個名稱,僅通過指定第一個字母的索引號來更改第一個字母的大小寫。然後添加返回的結果與剩餘的字符,然後最後追加新名稱到已經創建的空列表中。

def Strings(): 

    strings = input("Please enter a list of strings: ") 
    List = strings.replace('"','').replace('[','').replace(']','').split(",") 


    return List 

def Capitalize(parameter): 
    r = [] 
    for i in parameter: 
    m = "" 
    for j in i.split(): 
     m += j[0].upper() + j[1:] + " " 
    r.append(m.rstrip()) 


    return r 

def main(): 
    y = Strings() 
    x = Capitalize(y) 
    print(x) 

main() 

OR

import re 
strings = input("Please enter a list of strings: ") 
List = [re.sub(r'^[A-Za-z]|(?<=\s)[A-Za-z]', lambda m: m.group().upper(), name) for name in strings.replace('"','').replace('[','').replace(']','').split(",")] 
print(List) 
+0

它正在工作,但我想要用問號 – brilliant 2015-04-06 00:30:35

+0

中提到的引號將字符串打印出來您的程序:'[「apple pie」]'returning '[ '蘋果派']' – brilliant 2015-04-06 00:31:19

+0

檢查我的更新.. – 2015-04-06 00:36:41

0

您在列表中操作,而不是列表中的元素。

r.title() 

這是沒有意義的。

+0

修復! @bald – brilliant 2015-04-06 00:43:47

+0

我想要用引號打印出來的字符串 – brilliant 2015-04-06 00:48:42

相關問題