更好地返回符合特定条件的项目列表而不是+ =

时间:2017-08-30 23:35:09

标签: python-2.7 formatting converter

并原谅我的无知,但我是python的新手。 我正在尝试在python 2.7中修改转换器,我发现让一些函数按我喜欢的方式工作非常困难,所以任何帮助都将非常感激。 我有这些特定的代码部分。

    def int2hex(self, int):
    return ("%x" % int)

    def Caids(self):
    caids = ""
    service = self.source.service
    if service:
        info = service and service.info()
        if info:
            caids = list(set(info.getInfoObject(iServiceInformation.sCAIDs)))
    return caids


def CaidList(self):
    caids = self.Caids()
    caidlist = ""
    if caids:
        for caid in caids:
            caid = self.int2hex(caid).upper().zfill(4)
            if (len(caids) > 1):
                caidlist = ", ".join("{:04x}".format(x) for x in caids).upper()
            else:
                caidlist += caid
    return caidlist

在上面的代码中,我设法创建了一个十六进制列表字符串,其中包含带有list(set(info.getInfoObject(iServiceInformation.sCAIDs)))的某些元素(caid)并删除重复项。然后我拿出每个caid,将其转换为十六进制并返回一个新的caidlist,其中相同的元素用逗号和空格分隔。到这里一切都很好。结果是一个十六进制数列表,如0500,0502,0100,0D07等。 当我想通过满足某些标准将每个caid转换为Text元素时,问题就出现了。

我制作的代码遵循前一个代码:

def CaidTxtList(self):
    caids = self.Caids()
    caidtxt = ""

    if caids:
        for caid in caids:
            caid = self.int2hex(caid).upper().zfill(4)
            if str(caid).startswith("01"):
                caid = "Seca"
            if str(caid).startswith("05"):
                caid = "Viaccess"
            if str(caid).startswith("06"):
                caid = "Irdeto"
            if str(caid).startswith("0D"):
                caid = "CryptoWorks"
            caidtxt += caid
            caidtxt += " "
    return caidtxt

在上面的代码中,我设法将每个caid转换为等效文本。结果是一串对应于每个十六进制caid的单词,但是我没有设法使用join命令获得我的结构,就像它们的十六进制等效一样,就像在CaidList部分一样。

使用caidtxt + = caid我得到的是Viaccess,Viaccess,Seca,CryptoWorks,(空白)。

我努力实现的目标是:

  1. 返回一个字符串,其中每个caid都被等效文本替换。这已经完成,但我想更改格式。
  2. 最后删除重复的条目和额外的空格。在Viaccess,Viacess,Seca,Cryptoworks中,我怎样才能让Viaccess只出现一次并删除拖尾的空白? 我尝试加入并设置,但每次我有一个连接错误(set和str)或字符串混合了字母。
  3. 简而言之,在CaidList部分中我要做的就是在CaidTxtList部分完成,单词不重复。
  4. 我知道我很亲密,因为不知道如何进一步行动而感到愚蠢。我见过很多文件和例子,但我尝试过的一切都失败了。所以,如果有任何方法可以实现我喜欢的格式化,请帮助我!

0 个答案:

没有答案