从python中的路径中剥离特定部分

时间:2017-05-17 17:09:32

标签: python

我有一条这样的道路。

/schemas/123/templates/Template1/a/b

我想剥离所有内容并仅将数字(即123)存储到变量中。有人可以帮忙吗?我想要存储的数字每次都保留在路径中的相同位置。我的意思是数字总是在/ schemas /" number"

之后

非常感谢

2 个答案:

答案 0 :(得分:1)

pathlib个对象旨在方便地访问路径的组件parts

>>> from pathlib import Path
>>> path = Path('/schemas/123/templates/Template1/a/b')
>>> path.parts
('/', 'schemas', '123', 'templates', 'Template1', 'a', 'b')
>>> [int(part) for part in path.parts if part.isdigit()]
[123]

答案 1 :(得分:0)

编辑在评论中声明它可以是数字和字符

方法1 使用拆分

#!/usr/bin/python
testLine = "/schemas/123abc/templates/Template1/a/b"
print testLine.split("/")[2]

方法2 使用正则表达式

选择第二个和第三个之间的任何内容(如果存在)斜杠

#!/usr/bin/python
import re

testLine = "/schemas/123abc/templates/Template1/a/b"
pattern = "^/schemas/(.[^/]+).*"
matchObj = re.match(pattern, testLine)

if matchObj:
    num = matchObj.group(1)
    print int(num)
else:
    print "not found"

模式如下:

  • ^ / 字符串以斜杠开头
  • 架构/ 接下来会出现一个带有斜线的模式
  • (。[^ /] +)包含一个或多个不包括斜杠的字符(用于分组的括号)
  • 。* 以任何字符结尾