Регулярное выражение для интерпретации неудобной научной записиPython

Программы на Python
Anonymous
Регулярное выражение для интерпретации неудобной научной записи

Сообщение Anonymous »

Хорошо, я работаю с этими данными ENDF, см. здесь. Иногда в файлах присутствует, пожалуй, самая раздражающая кодировка чисел с плавающей запятой в научной записи, которую я когда-либо видел1. Там часто используется, что вместо 1.234e-3 будет что-то вроде 1.234-3 (без «е»).
Теперь я' Я видел библиотеку, которая просто заменяет - на e- или + на e+ простой заменой. Но это не работает, когда некоторые числа могут быть отрицательными. В конечном итоге вы получите какую-то ерунду, например e-5.122e-5, когда на входе было -5.122-5.
Итак, я думаю, мне нужно перейти к регулярное выражение? Я открыт для другого решения, более простого, но это лучшее, что я могу сейчас придумать. Я использую библиотеку re Python. Я могу сделать простую замену, ищу [0-9]-[0-9] и заменяю это следующим образом:

Код: Выделить всё

import re
str1='-5.634-5'
x = re.sub('[0-9]-[0-9]','4e-5',str1)
print(x)
Но, очевидно, в целом это не сработает, потому что мне нужно, чтобы цифры до и после - были такими, какими они были, а не просто выдуманными мною... Раньше я использовал группы захвата, но в этом контексте было бы самым быстрым способом использовать группу захвата для цифр до и после - и передать ее обратно в подстановку с помощью библиотеки регулярных выражений Python import re?
1 Да, я знаю, фортран...80 символов...экономия места...перфокарты...никому уже нет дела.

Подробнее здесь: https://stackoverflow.com/questions/788 ... c-notation

Вернуться в «Python»