从python中的数值中只获取前两个数字。如何?

时间:2018-04-02 14:52:31

标签: python python-2.7

我有以下代码的输出,从那个输出我需要得到那个值的maj和次要。有什么方法我只得到前两个数字4.4不是全值4.4.73.4

  for version in issue["fields"]["fixVersions"]:
    cacheData = json.dumps(version)
    jsonToPython = json.loads(cacheData)
    #lines = jsonToPython.items()
    if jsonToPython['name'][:8] == "Ciagana ":
      matches = re.findall(r"\d+\.\d+\.\d+\.\d+", jsonToPython['name'])
      print matches[0]

以下是当前代码的输出:

Retrieving list of issues 
Processing CTPT-2
4.4.73.4
4.4.90.0
Processing CTPT-1
4.5.73.4

以下是所需的输出

Retrieving list of issues 
Processing CTPT-2
4.4
4.4
Processing CTPT-1
4.5

2 个答案:

答案 0 :(得分:4)

正则表达式可行,或简单拆分:

short_version_string = '.'.join(version_string.split('.')[:2])

或者这个,虽然它只适用于Python 3:

major, minor, *_ = version_string.split('.')

答案 1 :(得分:2)

另一种方法是,修改你的正则表达式模式以预测另一个时期:

text = ['4.4.73.4', '4.4.90.0', '4.5.73.4']

for version in text:
    matches = re.findall(r"\d+\.\d+(?=\.)", version)
    print matches[0]

#4.4
#4.4
#4.5

模式是:

  • \d+\.\d+:任意数字后跟一个句点后跟任意位数
  • (?=\.):另一段时间的非捕捉前瞻