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>? Oure.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>?