在中附加值Python。怎么了?

2024-09-27 21:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从下面的代码中获取每个JIRA问题的FixVersion值,格式如下,然后我尝试在python中使用append方法来追加该值,但没有得到所需的结果

  for version in issue["fields"]["fixVersions"]:
    cacheData = json.dumps(version)
    jsonToPython = json.loads(cacheData)
    #lines = jsonToPython.items()
    if jsonToPython['name'][:8] == "Clignra ":
      Fixversionmatch = re.findall(r"(\d+\.\d+)\.\d+\.\d+", jsonToPython['name'])
      match = Fixversionmatch[0]
      print match     
  for i in range(match):
    allModules.append(i)      
    print allModules

从上面的代码我得到下面的错误

for i in range(match):
TypeError: range() integer end argument expected, got unicode.

如果我删除下面的代码,只做打印匹配

  for i in range(match):
    allModules.append(i)      
    print allModules

然后我得到下面的输出 删除并获取无unicode后:

Processing TTPT-2
1.4
2.4
2.5
Processing TTPT-1
2.4

我想达到的效果如下

Processing TTPT-2
[1.4, 1.4, 1.5]
Processing TTPT-1
[1.4]

Tags: 代码nameinjsonforversionmatchrange
1条回答
网友
1楼 · 发布于 2024-09-27 21:34:15

正如我在评论中所说,您遇到的错误是由于^{}返回字符串列表,而^{}需要整数参数。然而,要获得你想要达到的目标,你需要把你的捕获变成一个列表,比如:

fix_versions = []
for version in issue["fields"]["fixVersions"]:
    cacheData = json.dumps(version)
    jsonToPython = json.loads(cacheData)
    if jsonToPython['name'][:8] == "Clignra ":
        version_match = re.findall(r"(\d+\.\d+)\.\d+\.\d+", jsonToPython['name'])
        if version_match:
            fix_versions.append(version_match[0])
print(fix_versions)

根据您的问题,这应该打印:['4.4', '4.4', '4.5'](对于下一个模块,依此类推……)如果您希望将它们作为纯浮点,可以在附加到fix_versions列表时进行转换:fix_versions.append(float(version_match[0]))

还有,你为什么要这样做的任何特殊原因:

cacheData = json.dumps(version)
jsonToPython = json.loads(cacheData)

什么?这将产生一个相等的结构,这样您就可以完全忽略它,直接在version上执行匹配,即:

fix_versions = []
for version in issue["fields"]["fixVersions"]:
    if version['name'][:8] == "Clignra ":
        version_match = re.findall(r"(\d+\.\d+)\.\d+\.\d+", version['name'])
        if version_match:
            fix_versions.append(version_match[0])
print(fix_versions)  # `['4.4', '4.4', '4.5']` etc. or similar
# or:
print("[{}]".format(", ".join(fix_versions)))  # `[4.4, 4.4, 4.5]` etc.

相关问题 更多 >

    热门问题