2015-04-06 63 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

相关问题