并原谅我的无知,但我是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,(空白)。
我努力实现的目标是:
我知道我很亲密,因为不知道如何进一步行动而感到愚蠢。我见过很多文件和例子,但我尝试过的一切都失败了。所以,如果有任何方法可以实现我喜欢的格式化,请帮助我!