python find all that follow pattern: number number . number numner -
i have list of strings , need find follow logic
twodigits.twodigits example| correct? ----------- | ------ 03.38 | yes 10.59 | yes 10.23 m3/h | no 50.8 mm | no i tried "." did not work...
for in elements: id = i.id if i.text[2:3] == '.': i.text= '' atext1.append(i.text) i found not sure how use in code?
str_extract_all(text, "\\d{2}.\\d{2}") %>% my current code answers:
for in elements: id = i.id match = search('\d{2}\.\d{2}$',i.strip()) if match: atext1.append(match.string) i.text= '' #atext1.append(i.text) else: atext2.append(i.text) atext.append(i.text) another try still not work
for in elements: id = i.id k = i.text atext3.append(k) match=search('\d{2}\.\d{2}$',k.strip()) if match: atext4.append(match.string) i.text= '' this 1 aslo no success
for in elements: id = i.id k = i.text atext3.append(k) if k.split('.')[0:2].isdigit(): i.text= '' atext3.append(i.text) i got working finally.
import clr clr.addreference('protogeometry') autodesk.designscript.geometry import * clr.addreference("revitnodes") import revit clr.importextensions(revit.elements) clr.addreference("revitservices") import revitservices revitservices.persistence import documentmanager revitservices.transactions import transactionmanager system.collections.generic import * clr.addreference("revitapi") import autodesk autodesk.revit.db import * re import search doc = documentmanager.instance.currentdbdocument uiapp = documentmanager.instance.currentuiapplication app = uiapp.application #the inputs node stored list in in variable. #from re import search atext3 = [] atexttrue = [] atextfalse = [] atextall = [] #unwrap elements use api elements = [] in in[0]: elements.append(unwrapelement(i)) transactionmanager.instance.ensureintransaction(doc) in elements: atext3 = i.text match = search('\d{2}\.\d{2}$', atext3.strip()) if match: i.text = 'deletedtext' atexttrue.append(i.text) else: atextfalse.append(i.text) atextall.append(i) transactionmanager.instance.transactiontaskdone() #assign output out variable out = atexttrue, atextfalse, atextall
def fits_pattern(s): s = s.strip() return len(s) == 5 , s[2] == '.' , (s[:2] + s[-2:]).isdigit() test_string in ['03.38', '10.59 ', '10.23 m3/h', '50.8 mm', 'ab.cd', '12.3d', '1234', '12345', '', ' 12.34 ']: print(repr(test_string)) print(fits_pattern(test_string)) output:
'03.38' true '10.59 ' true '10.23 m3/h' false '50.8 mm' false 'ab.cd' false '12.3d' false '1234' false '12345' false '' false ' 12.34 ' true a regex solution be:
import re def fits_pattern(s): return re.match(r'\s*\d\d\.\d\d\s*', s) \s*: 0 or more spaces (including newlines, tabs, etc.) \d: digit \.: literal ., since . different. r'...': raw string literal, useful regexes avoid having loads of \ characters in string literal.
Comments
Post a Comment