我从以下代码获取以下格式的每个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]
答案 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