在python中只查找有多个字符串的整数值

2024-09-27 21:31:35 发布

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

下面是一段python代码,我用它来获取JIRA发行版的组件名,其中一些是组件字段中的单个值,一些是组件字段中的多个值。我的问题是组件字段可能有不同名称的值,例如R ABC 1.1、R Aiapara 2.3A1(Active)等。我不想按下面的方式执行代码。是吗我可以从组件中找到整数值。从这个组件(R ABC 1.1)我需要1.1,对于第二个组件(R Aiapara 2.3A1(Active))我也需要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']

Tags: 代码name名称jsonversiona1组件active
2条回答

我觉得我不太明白你的问题,所以我会尽量回答,但如果我有任何错误,请随时纠正我。你知道吗

此函数将从列表中的字符串中获取所有数字:

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

希望这有帮助:)

使用正则表达式:

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']

相关问题 更多 >

    热门问题