Czy można wykonywać prostą matematykę na wyjściu z wyrażeń regularnych Python?Wykonaj prostą matematykę na wyjściu wyrażenia regularnego? (Python)
mam dużego pliku, gdy trzeba podzielić na następujące numery ")"
przez 100. Na przykład, by konwertować zawierające następującą linię )75
i )2
:
((words:0.23)75:0.55(morewords:0.1)2:0.55);
do )0.75
i )0.02
:
((words:0.23)0.75:0.55(morewords:0.1)0.02:0.55);
Moja pierwsza myśl to użyć re.sub
przy użyciu wyrażenia wyszukiwania "\)\d+"
, ale nie wiem, jak podzielić int eger podążając za nawiasami przez 100, lub jeśli jest to możliwe, używając re
.
Wszelkie uwagi na temat rozwiązania tego problemu? Dzięki za pomoc!
Czy próbowałeś przekonwertować ciąg na liczbę całkowitą? – erbridge
Regex służy do manipulacji tekstem. Aby osiągnąć, nie widzę żadnej ucieczki od konwersji ciągu na liczbę całkowitą i dzielenia go przez 100. – andrefsp
Nawiasem mówiąc, wygląda na to, że jest w formacie Newick (z wyjątkiem tego, że w formacie Newick normalnie nie miałbyś pewności co do bootstrapu pojedynczy węzeł, taki jak 'words' lub' morewords'). Możesz mieć łatwiejsze wykonywanie innych operacji za pomocą parsera Newick, np. [W BioPython] (http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc165), zamiast w regex. –