我有下面的python代码,我用它来获取JIRA问题的组件名称,其中一些是组件字段中的单值,一些是组件字段中的多值。我的问题是组件字段可能有不同名称的值,例如R ABC 1.1,R Aiapara 2.3A1(Active)等,我不想在下面的code.Is中尝试这样做,因为我只能从组件中找到整数值。对于这个组件(R ABC 1.1),我需要1.1,对于第二个组件(R Aiapara 2.3A1(活动)),我也需要2.3,因此我不需要依赖于组件的名称
for version in issue["fields"]["components"]:
cacheData = json.dumps(version)
jsonToPython = json.loads(cacheData)
if jsonToPython['name'][:10] == "R Aiapara ":
allModules.append(jsonToPython["name"][10:])
print allModules 下面是我得到的输出
Retrieving list of issues
Processing SPTN-2
[u'1.6']
Processing SPTN-1
[u'1.5']
[u'1.5', u'1.6']发布于 2018-03-30 04:25:52
使用正则表达式:
import re
s1 = "R ABC 4.4"
s2 = "R Ciapara 4.4A1(Active)"
print(re.findall(r"\d+\.\d+", s1))
print(re.findall(r"\d+\.\d+", s2))输出:
['4.4']
['4.4']发布于 2018-03-30 04:35:22
我觉得我不太理解你的问题,所以我会尽我所能回答,但如果我有任何错误,请随时纠正我。
此函数将从列表中的字符串中获取所有数字:
def getNumber(string):
numbers = ".0123456789"
result = []
isNumber = False
for i in string:
if (i in numbers and isNumber):
result[-1] += i
elif i in result:
result+= [i]
isNumber = True
else:
isNumber = False
return result但是,如果您想要第一个数字之后的所有字符,那么您将需要此函数。它将返回第一个数字之后的所有内容,如果第一个数字中没有数字,则返回False。
def getNumber(string):
numbers = ".0123456789"
result = []
isNumber = False
for i,char in enumerate(string):
if char in numbers:
return string[i:]
return False现在,如果您想要第一个和最后一个数字之间的所有内容,请尝试以下代码:
def getNumber(string):
numbers = ".0123456789"
result = string
isNumber = False
for i,char in enumerate(string):
if char in numbers:
result = result[i:]
break
for i in range(len(result)-1, 0, -1):
if result[i] in numbers:
result = result[:i+1]
break
return result希望这能有所帮助:)
https://stackoverflow.com/questions/49564238
复制相似问题