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

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -