#python #re
Вопрос:
Пожалуйста, помогите мне использовать регулярные выражения Python для разделения этого заголовка на элементы
TITLE="D:Experiments2021iai_0107_exp1_Analysisexp1_006014.T000.D000.P001.H000.L.vec" VARIABLES="X mm", "Y mm", "U m/s", "V m/s", "CHC", DATASETAUXDATA Application="PIV" DATASETAUXDATA SourceImageWidth="4008" DATASETAUXDATA SourceImageHeight="2672" DATASETAUXDATA MicrometersPerPixelX="85.809998" DATASETAUXDATA MicrometersPerPixelY="85.809998" DATASETAUXDATA LengthUnit="mm" DATASETAUXDATA OriginInImageX="0.000000" DATASETAUXDATA OriginInImageY="0.000000" DATASETAUXDATA MicrosecondsPerDeltaT="50.000000" DATASETAUXDATA TimeUnit="ms" DATASETAUXDATA SecondaryPeakNumber="0" DATASETAUXDATA DewarpedImageSource="0" ZONE I=124, J=82, F=POINT
Я не могу понять, как отделить повторяющийся шаблон типа:
DATASETAUXDATA MicrosecondsPerDeltaT="50.000000" DATASETAUXDATA TimeUnit="ms
в:
header = {'MicrosecondsPerDeltaT':50.0000, 'TimeUnit':'ms', ...}
и так далее.
Заранее спасибо, Алекс
Комментарии:
1. На что мы смотрим? Какой заголовок? Каков формат?
Ответ №1:
Вы можете попробовать приведенный ниже код
import re
r = re.compile('DATASETAUXDATA MicrosecondsPerDeltaT="(?P<MicrosecondsPerDeltaT>d*[.,]?d*)" DATASETAUXDATA TimeUnit="(?P<TimeUnit>.*)"')
s = '''DATASETAUXDATA MicrosecondsPerDeltaT="50.000000" DATASETAUXDATA TimeUnit="ms"'''
output = r.match(s).groupdict()
print(output)
# {'MicrosecondsPerDeltaT': '50.000000', 'TimeUnit': 'ms'}
Ответ №2:
Я предполагаю, что вы хотите создать словарь с парами ключевых значений, соответствующими этому шаблону. Если это то, чего вы хотите, что-то вроде этого сделает свое дело:
import re
text="""
TITLE="D:Experiments2021iai_0107_exp1_Analysisexp1_006014.T000.D000.P001.H000.L.vec" VARIABLES="X mm", "Y mm", "U m/s", "V m/s", "CHC", DATASETAUXDATA Application="PIV" DATASETAUXDATA SourceImageWidth="4008" DATASETAUXDATA SourceImageHeight="2672" DATASETAUXDATA MicrometersPerPixelX="85.809998" DATASETAUXDATA MicrometersPerPixelY="85.809998" DATASETAUXDATA LengthUnit="mm" DATASETAUXDATA OriginInImageX="0.000000" DATASETAUXDATA OriginInImageY="0.000000" DATASETAUXDATA MicrosecondsPerDeltaT="50.000000" DATASETAUXDATA TimeUnit="ms" DATASETAUXDATA SecondaryPeakNumber="0" DATASETAUXDATA DewarpedImageSource="0" ZONE I=124, J=82, F=POINT
"""
result = re.findall(r"DATASETAUXDATA w ="[w.] "", text)
dict = {}
for item in result:
pair = item.replace("DATASETAUXDATA ", "")
key_value = pair.split("=")
dict[key_value[0]] = key_value[1].replace(""", "")
print(dict)
# prints {'Application': 'PIV', 'SourceImageWidth': '4008', 'SourceImageHeight': '2672', 'MicrometersPerPixelX': '85.809998', 'MicrometersPerPixelY': '85.809998', 'LengthUnit': 'mm', 'OriginInImageX': '0.000000', 'OriginInImageY': '0.000000', 'MicrosecondsPerDeltaT': '50.000000', 'TimeUnit': 'ms', 'SecondaryPeakNumber': '0', 'DewarpedImageSource': '0'}