将列表转换为字符串并将其打印出python

时间:2015-09-30 05:41:09

标签: list python-3.x

我正在尝试将字符串中每个单词的第一个字母转换为python中的大写字母。但是在此之前,我仍然没有收到generator object at 0x10315b8>帖子似乎回答了我的问题。

def capitalize(str):
  newstr = str.split(' ')
  newlist = []
  for word in newstr:
    if word[0][0] == word[0][0].upper():
      newlist.append(word[0][0].upper())
      newlist.append(word[0][1:])
      newlist.append(" ")
  convert_first = (str(w) for w in newlist)
  print(convert_first)
capitalize(input("enter some string"))#calling the function

2 个答案:

答案 0 :(得分:1)

您的问题在于如何尝试从字符串列表中创建字符串。将字符串“拆分”为列表的相反方法是将列表“连接”到字符串中。

def capitalize(str):
    newstr = str.split(' ')
    newlist = []
    for word in newstr:
        newlist.append(word[0].upper() + word[1:])
    convert_first = ' '.join(newlist)
    print(convert_first)
capitalize(input("enter some string"))#calling the function

注意:我试图让我的代码尽可能接近问题中的代码。

另外,为什么代码中有if语句?有了它,你真的只是把所有已经资本化的词汇都用掉,并放弃其余的词,因为它们从未进入新的列表。

答案 1 :(得分:0)

您的代码存在一些问题:

  1. 您收到的错误消息是尝试打印convert_first,这是一个生成器,而不是字符串。

  2. newstr是一个单词列表,因此word是一个字符串,word[0]已经是第一个字符。对word[0][0]word[0][1:]毫无意义。

  3. if word[0][0] == word[0][0].upper():只过滤掉第一个字符不是大写的所有单词...

  4. 因此,只需要一些代码就能完成您所描述的内容:

    def capitalize(str):
      newstr = str.split(' ')
      newlist = []
      for word in newstr:
        newlist.append(word[0].upper())
        newlist.append(word[1:])
        newlist.append(" ")
      convert_first = ''.join(w for w in newlist)
      print(convert_first)
    capitalize(input("enter some string"))
    

    或者那些喜欢短代码和生成器表达式的人:

    def capitalize(str):
      print(' '.join(word[0].upper() + word[1:] for word in str.split(' ')))
    capitalize(input("enter some string"))
    

    这也会删除生成的字符串的拖尾空间,这可能(不)是你想要的。