在python中追加值。怎么样?

时间:2018-04-02 18:15:19

标签: python python-2.7

我从以下代码获取以下格式的每个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
4.4
4.4
4.5
Processing TTPT-1
4.4

我想要实现的输出低于

Processing NTPT-2
[4.4, 4.4, 4.5]
Processing NTPT-1
[4.4]

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,您遇到的错误是由于re.findall()返回字符串列表而range()期望整数参数。但是,为了获得您想要实现的目标,您需要将捕获转换为列表,例如:

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'](等等,对于下一个模块......)如果你想要它们作为纯浮点数,你可以在附加到{{1时进行转换列表:fix_versions

另外,你为什么要这样做:

fix_versions.append(float(version_match[0]))

?这应该会产生相同的结构,所以你可以完全省略它并直接在cacheData = json.dumps(version) jsonToPython = json.loads(cacheData) 上进行匹配,即:

version