您可以使用slice operator(:) 过滤掉您需要的文本,如下所示:
# -*- coding: utf-8 -*-
data = [
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083601_0004_RED.TIF Aperture : 2.2 Shutter Speed : 1/1806",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083600_0003_NIR.TIF Aperture : 2.2 Shutter Speed : 1/510",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083601_0004_REG.TIF Aperture : 2.2 Shutter Speed : 1/374",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083600_0003_RED.TIF Aperture : 2.2 Shutter Speed : 1/1884"
]
for node in data :
node_lst = node[node.index('Aperture : '):].split()
Fnumber = node_lst[2]
ShutterSpeed = node_lst[6]
print(Fnumber, ShutterSpeed)
或者,您可以这样做,而不必在您的数据上使用.split():
# -*- coding: utf-8 -*-
data = [
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083601_0004_RED.TIF Aperture : 2.2 Shutter Speed : 1/1806",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083600_0003_NIR.TIF Aperture : 2.2 Shutter Speed : 1/510",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083601_0004_REG.TIF Aperture : 2.2 Shutter Speed : 1/374",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083600_0003_RED.TIF Aperture : 2.2 Shutter Speed : 1/1884"
]
for node in data :
Fnumber_txt = node[node.index('Aperture : ') + len('Aperture : '):]
Fnumber = Fnumber_txt[:Fnumber_txt.index(' ')]
ShutterSpeed = node[node.index('Shutter Speed : ') + len('Shutter Speed : '):]
print(Fnumber, ShutterSpeed)
以上代码 sn-ps 都会产生这个结果:
2.2 1/1806
2.2 1/510
2.2 1/374
2.2 1/1884
编辑:由于您在一个实体的三个不同索引处有数据,您可以使用切片运算符的step 来获取它并进行处理,如下所示:
# -*- coding: utf-8 -*-
data = [
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083601_0004_RED.TIF",
"Aperture : 2.2",
"Shutter Speed : 1/1806",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083600_0003_NIR.TIF",
"Aperture : 2.2",
"Shutter Speed : 1/510",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083601_0004_REG.TIF",
"Aperture : 2.2",
"Shutter Speed : 1/374",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083600_0003_RED.TIF",
"Aperture : 2.2",
"Shutter Speed : 1/1884"
]
fns = [float(fn.split(":")[-1].strip()) for fn in data[1::3]]
sss = [ss.split(":")[-1].strip().split("/") for ss in data[2::3]]
for i, elems in enumerate(sss) :
Fnumber = fns[i]
Shutter = elems[0]
Speed = elems[1]
print(Fnumber)
print(Shutter)
print(Speed)
这将导致:
2.2
1
1806
2.2
1
510
2.2
1
374
2.2
1
1884
或者,您可以像这样格式化最终结果:
# -*- coding: utf-8 -*-
data = [
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083601_0004_RED.TIF",
"Aperture : 2.2",
"Shutter Speed : 1/1806",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083600_0003_NIR.TIF",
"Aperture : 2.2",
"Shutter Speed : 1/510",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083601_0004_REG.TIF",
"Aperture : 2.2",
"Shutter Speed : 1/374",
"======== /home/stagiaire/Bureau/Photos Test Luxmetes/Position 2 (au sol à l'ombre)/0033/IMG_170407_083600_0003_RED.TIF",
"Aperture : 2.2",
"Shutter Speed : 1/1884"
]
fns = [float(fn.split(":")[-1].strip()) for fn in data[1::3]]
sss = [ss.split(":")[-1].strip().split("/") for ss in data[2::3]]
print(list(map(lambda x: [float(x[0]), float(x[1][0]), float(x[1][1])], list(zip(fns, sss)))))
这将导致:
[[2.2, 1.0, 1806.0], [2.2, 1.0, 510.0], [2.2, 1.0, 374.0], [2.2, 1.0, 1884.0]]