Я ищу выражение Regex, которое возвращает совпадение, если выполнено любое из следующих условий:
- Обнаружена звездочка, которая не находится в середине двух чисел. Первое число всегда будет целым числом, но второе число может быть целым числом (1 * 4), float (8 * 1,35) или scientifi c (8 * 2e-3)
- Любые текстовые строки (опять же, игнорируя обозначения scientifi c)
Примечание: я построил выражение для удаления любого текста, который следует за двойной звездочкой ("**"), но был бы признателен, если бы решение могло также включить это как один шаг. В конце концов я разделю строку по значениям в ней, но завис на начальном шаге «has_text» (помечая строки звездочкой, но игнорируя, когда это происходит между 2 числами):
Пример ввода :
input = ["1 2 3",
"4 5 6 **This is a comment to strip",
"123 *This is a line to ignore 321",
"7e-1 3*8 9"]
Желаемый выход:
output = ["1 2 3",
"4 5 6",
"7e-1 3*8 9"]
Код:
import re
output = []
for line in input:
line_no_comments = re.sub('(\*{2}.*)', '', line)
has_text = re.search('([^0-9eE .-]+[*]{1})', line_no_comments)
if not has_text:
output.append(line_no_comments)