我正在尝试编写一个applyRules(char, rules)
的函数
它应该
规则列表的格式应该是一组字符串,格式如下:
character1:substitution,character2:substitution等。
我想遍历规则列表,并将字符串解析为符号和替换(可能使用split()
函数)?
这是我到目前为止所做的:
def applyRules(char, rules):
newstr = ""
for x in char:
newstr += s[0].replace('#') + s[1].replace('*')
return newstr
我理解这种格式吗?
答案 0 :(得分:1)
这是一种使用字典来保存替换规则的相当简单的方法:
rules = {
'#': 'No. ',
'*': 'one or more',
# etc
}
def applyRules(text, rules):
for rule in rules:
text = text.replace(rule, rules[rule])
return text
test = """
#1 - Never tell a lie.
#2 - There can be * of them.
"""
print(applyRules(test, rules))
输出:
No. 1 - Never tell a lie.
No. 2 - There can be one or more of them.
答案 1 :(得分:0)
根据我的理解,我认为这就是你想要的:
def applyRules(char, rules):
for rule_list in (rule.split(':') for rule in rules):
char = char.replace(rule_list[0], rule_list[1])
return char
例如:print(applyRules('b', ['b:c', 'c:p']))
输出'p'
答案 2 :(得分:0)
我可能错了,但似乎你的代码和描述不同。如果char是单个字符,那么你将如何迭代它?这是你正在寻找的吗?
def apply_rules(char, rules_list):
for old, new in map(lambda x: x.split(':'), rules_list):
char = char.replace(old, new)
return char