【问题标题】:Lists and Strings PYTHON - beginner列表和字符串 PYTHON - 初学者
【发布时间】:2014-09-09 23:01:51
【问题描述】:

在涉及类时,我在格式化和理解列表和字符串方面遇到问题。 所以我在这里有这段代码:

class User:
    def __init__(self,title):
        self.tile=tile
        self.rank={}

    def addCard(self,compID,number):
        if compID in self.cards and number > self.cards[compID]:
            self.cards[compID]=number
        elif compID not in self.cards:
            self.cards[compID]=number   

    def __str__(self):
        self.cardList = []
        for compID, number in self.cards.items():
            final = compID + "-" + str(number)
            self.cardList.append(temp)
            self.cardList.sort()
        return self.tile + ":" + " " + "Card scores:" + str(self.cardList)

所以我的结果如下所示:

OUTPUT 1:
Cpt.Fred: Card scores: ['diamond-22', 'hearts-4', 'spades-3']
Lt.Connor: Card scores: ['diamond-43']

我试图让我的结果看起来像这样:

OUTPUT 2:
Cpt.Fred: Card scores: [ diamond-22, hearts-4, spades-3 ]
Lt.Connor: Card scores: [ diamond-43 ]

数据并不重要,重要的是如何去掉结果开头和结尾的“'”。我认为这与我最后的 def() 语句有关,但我一直在尝试以各种方式格式化它,但没有运气。谁能帮忙把第一个输出变成第二个输出?

【问题讨论】:

  • 我认为您将不得不进行一些手动列表解析才能使其按您想要的方式打印。我不知道如何从列表中的字符串中删除这些引号。
  • 不重复:链接的问题要求列表的类型转换元素,这个是关于str vs repr
  • @metaperture,它与强制转换无关,它是如何从 python 列表项中删除单引号
  • 所有答案(包括接受的答案)都进行类型转换。页面上只有一行关于字符串连接。 “删除单引号”是问题的名称,但显然每个人都认为它的意思是“将 strs 转换为整数”。

标签: python string list class append


【解决方案1】:

您应该这样做,而不是调用str(self.cardList)

return "%s: Card scores: [%s]" % (self.title, ", ".join(self.cardList))

问题是列表上的str 调用列表元素上的repr(包括引号),而您只需要逗号连接的元素的str

【讨论】:

    【解决方案2】:

    您可能需要手动处理和打印列表。这是您可以做到这一点的一种方法。

    def printList(cardlist):
      printstr = "["                   # Start with [.
      for card in cardlist:
        printstr += card + ", "        "card, "
      printstr = printstr[:-2] + "]"   # Remove the last ", " before adding the last ].
    

    【讨论】:

    • 您的 for 循环可以改为 ', '.join(cardlist)
    【解决方案3】:

    问题出在“str(self.cardList)”中。它按原样打印出列表,这意味着它将字符串放入引号中以将它们与数字和其他对象区分开来。

    def list_to_string(some_list):
        str = "["
        for i in range(len(some_list)):
            str += some_list[i]
            if i < len(some_list)-1:
                str += ", "
        str += "]"
        return str
    

    这会将您的列表解析为不带引号的字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多