J'essaie de remplacer '=' avec '==' dans la chaîne suivante: Malheureusement, seule la seconde "= 'est remplacée. Pourquoi le premier n'est-il pas remplacé et comment puis-je remplacer le premier aussi? P> La sortie doit être la suivante: p> log="[x] = '1' and [y] <> '7' or [z]=='51'".
5 Réponses :
Peut-être que la fonction Remplacer () est ce que vous recherchez:
log="[x] = '1' and [y] <> '7' or [z]='51'" log = log.replace("=", "==")
Op a dit la ligne entière journal = "[x] = '1' et [y] <> '7' ou [z] = '51'". Code> est une chaîne, pas une variable
Journal code> contenant une chaîne, et que
= code> ->
== code> ne fonctionne pas à cause de cela.
def subs_equal_sign(logic): return logic.replace(']=', ']==').replace('] =', ']==')
Changer votre fonction sur
>>> subs_equal_sign('''log="[x] = '1' and [y] <> '7' or [z]='51'".''') 'log="[x]==\'1\' and [y] <> \'7\' or [z]==\'51\'".'
Un moyen rapide de faire face à celui-ci est de supprimer le blancheur:
def make_pythonic(str): """ Takes the branching logic string of a field name and converts the syntax to that of Python. """ # make list of all checkbox vars in branching_logic string # NOTE: items in list have the same serialization (ordering) # as in the string. checkbox_snoop = re.findall('[a-z0-9_]*\([0-9]*\)', str) # if there are entries in checkbox_snoop if len(checkbox_snoop) > 0: # serially replace "[mycheckboxvar(888)]" syntax of each # checkbox var in the logic string with the appropraite # "record['mycheckboxvar___888']" syntax for item in checkbox_snoop: item = re.sub('\)', '', item) item = re.sub('\(', '___', item) str = re.sub('[a-z0-9_]*\([0-9]*\)', item, str) # mask and substitute str = re.sub('<=', 'Z11Z', str) str = re.sub('>=', 'X11X', str) str = re.sub('=', '==', str) str = re.sub('Z11Z', '<=', str) str = re.sub('X11X', '>=', str) str = re.sub('<>', '!=', str) str = re.sub('\[', 'record[\'', str) str = re.sub('\]', '\']', str) # return the string return str
Pourquoi pas
retour logique.replace ('=', '==') code>? Ou
re.sub (r '(] \ s *) =', r '\ 1 ==', logique) code>?
La sortie doit être
log = "[x] == '1' et [y] <> '7' ou [z] == '51'". Code> ou
" ] == '1' et [y] <> '7' ou [z] == '51' ". Code>?