Обратите внимание, что триангуляции Delaunay могут не соответствовать вашему приложению, поскольку триангуляции Delaunay не подходят для истинных 3D-проблем (т. е. где точки хорошо распределены в R3).
Для создания поверхностей в R3 рассмотрите работу Hugues Hoppe и его работу по «восстановлению поверхности».
Реконструкция поверхности используется для нахождения сетчатой поверхности, соответствующей точечному облаку; однако этот метод дает высокие значения треугольников. Если это проблема, вы можете применить mesh метод сокращения, чтобы уменьшить количество полигонов, чтобы свести к минимуму ошибку. В качестве примера вы можете посмотреть методы декомпрессии OpenMesh.
Вы можете выполнить это с использованием регулярных выражений и без них. Вы можете просто добавить символ '-'
в text_to_search
и использовать поиск для поиска новой строки
lines = ['x = vR32_ALEX - vR33_ALAN; \n',
'y = vR33_ALAN; \n']
text_to_search = 'vR33_ALAN'
replacement_text = 'vR33_ALAN*c'
for line in lines:
if line.find('- '+text_to_search)!=-1:
print(line)
else:
print(line.replace(text_to_search, replacement_text),end='')
Или вы можете использовать модуль re, как предложено, для этого вам нужно сгенерировать шаблон для искать, как вы ищете '-'
или добавить text_to_search
, как и раньше. (.*)
указывает, что не имеет значения символы до и после шаблона.
import re
lines = ['x = vR32_ALEX - vR33_ALAN; \n',
'y = vR33_ALAN; \n']
for line in lines:
if re.match('(.*)'+' - '+'(.*)',line):
print(line)
else:
print(line.replace(text_to_search, replacement_text),end='')
Шаблон '(.*)'+' - '+text_to_search+'(.*)'
также должен работать. Надеюсь, это поможет
Вы можете использовать re.sub
с шаблоном негативного взгляда:
import re
lines = ['x = vR32_ALEX - vR33_ALAN; \n',
'y = vR33_ALAN; \n']
for line in lines:
print(re.sub(r'(?<!- )vR33_ALAN', 'vR33_ALAN*c', line), end='')
. Вывод:
x = vR32_ALEX - vR33_ALAN;
y = vR33_ALAN*c;
.